허용 및 거부 정책 문제 해결

Identity and Access Management(IAM) 허용 및 거부 정책 문제를 해결하는 데 사용할 수 있는 몇 가지 방법이 있습니다.

정책 문제 해결 도구 사용

특정 주 구성원의 액세스 문제를 해결해야 하는 경우 IAM 정책 문제 해결 도구를 사용하세요.

IAM 정책 문제 해결 도구는 사용자에게 특정 리소스에 대한 액세스 권한이 있는 이유 또는 API 호출 권한이 없는 이유를 이해하는 데 도움이 됩니다. 이메일 주소, 리소스, 권한을 입력하면 정책 문제 해결 도구가 리소스에 적용되는 모든 허용 및 거부 정책을 조사합니다. 그런 다음 이러한 정책을 사용하여 주 구성원에게 권한이 있는지 여부를 알려줍니다. 또한 정책의 역할 바인딩 및 거부 규칙을 나열하고 주 구성원의 액세스 권한에 미치는 영향을 설명합니다.

정책 문제 해결 도구를 사용하여 IAM 허용 및 거부 정책 문제를 해결하는 방법을 알아보려면 액세스 문제 해결을 참조하세요.

리소스에 적용되는 모든 허용 및 거부 정책 보기

Google Cloud에서 다음 IAM 정책은 리소스에 대한 액세스에 영향을 줍니다.

  • 리소스의 허용 정책
  • 리소스의 거부 정책(있는 경우)
  • 리소스의 상위 프로젝트, 폴더, 조직의 허용 정책(있는 경우)
  • 리소스의 상위 프로젝트, 폴더, 조직의 거부 정책(있는 경우)

상위 프로젝트, 폴더, 조직의 허용 및 거부 정책은 정책 상속으로 인해 리소스 액세스에 영향을 미칩니다. 허용 또는 거부 정책을 프로젝트, 폴더 또는 조직에 연결하면 해당 프로젝트, 폴더 또는 조직 내의 모든 리소스에도 정책이 적용됩니다.

예를 들어 조직에 대한 거부 정책에서 주 구성원이 특정 권한을 사용할 수 없다면 주 구성원은 조직 내의 모든 리소스에 해당 권한을 사용할 수 없습니다. 이 규칙은 해당 조직 내 폴더 및 프로젝트에 더 많은 허용 거부 정책이 있거나 주 구성원에게 권한을 부여하는 허용 정책이 있는 경우에도 적용됩니다.

마찬가지로 프로젝트의 허용 정책이 주 구성원에게 특정 권한을 부여하는 경우 주 구성원은 해당 권한이 거부되지 않는 한 프로젝트 내의 모든 리소스에 대한 해당 권한을 가질 수 있습니다.

이러한 모든 정책을 적용 가능한 정책 또는 유효 정책이라고 부릅니다.

Google Cloud에서 gcloud beta projects get-ancestors-iam-policy 명령어를 --include-deny 플래그와 함께 사용하여 프로젝트에 대한 액세스에 영향을 주는 모든 IAM 정책의 목록을 가져올 수 있습니다. 이러한 정책은 프로젝트에 적용 가능한 정책을 구성합니다. 각 정책을 조사하여 주 구성원의 액세스에 미치는 영향을 확인할 수 있습니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID. 프로젝트 ID는 my-project 같은 영숫자 문자열입니다.

gcloud beta projects get-ancestors-iam-policy 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

Windows(PowerShell)

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

Windows(cmd.exe)

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

응답에는 프로젝트, 프로젝트의 상위 폴더, 조직의 허용 정책과 거부 정책이 포함됩니다. 다음 예시에서는 조직 1234567890123 및 프로젝트 my-project의 허용 정책과 프로젝트 my-project의 거부 정책을 보여줍니다.

[
  {
    "id": "1234567890123",
    "policy": {
      "bindings": [
        {
          "members": [
            "group:cloud-admins@example.com"
          ],
          "role": "roles/iam.denyAdmin"
        },
        {
          "members": [
            "user:raha@example.com"
          ],
          "role": "roles/iam.serviceAccountAdmin"
        }
      ],
      "etag": "BwXW6Eab7TI=",
      "version": 1
    },
    "type": "organization"
  },
  {
    "id": "my-project",
    "policy": {
      "bindings": [
        {
          "members": [
            "group:cloud-admins@example.com"
          ],
          "role": "roles/owner"
        }
      ],
      "etag": "BwXXjOM7L6M=",
      "type": "project"
    }
  },
  {
    "id": "my-project",
    "policy": {
      "createTime": "2022-02-14T21:46:35.865279Z",
      "displayName": "My deny policy",
      "etag": "MTgyMzg2ODcwNTEyMjMxMTM3Mjg=",
      "kind": "DenyPolicy",
      "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F123456789012/denypolicies/my-deny-policy",
      "rules": [
        {
          "denyRule": {
            "deniedPermissions": [
              "iam.googleapis.com/serviceAccounts.create"
            ],
            "deniedPrincipals": [
              "principal://goog/subject/raha@example.com"
            ]
          },
          "description": "Prevent service account creation"
        }
      ],
      "uid": "c83e3dc3-d8a6-6f51-4018-814e9f200b05",
      "updateTime": "2022-02-14T21:46:35.865279Z"
    },
    "type": "project"
  }
]

이 예시에서 사용자 raha@example.com은 조직에서 서비스 계정 관리자 역할(roles/iam.serviceAccountAdmin)을 부여받았지만 프로젝트에는 raha@example.comiam.googleapis.com/serviceAccounts.create 권한을 사용하지 못하도록 하는 거부 정책이 있습니다. 따라서 raha@example.commy-project 프로젝트에 서비스 계정을 만들려고 시도하면 요청이 거부됩니다.

예를 들어 조직에서 거부 정책을 사용하지 않는 경우 리소스의 유효한 허용 정책만 보면 됩니다. 이러한 경우 다음 방법을 사용하여 유효한 허용 정책을 볼 수 있습니다.

  • Google Cloud 콘솔에서 리소스의 IAM 허용 정책을 확인합니다. Google Cloud 콘솔에 각 리소스의 유효한 정책이 자동으로 표시됩니다.

    Google Cloud 콘솔에서 리소스의 IAM 허용 정책을 보는 방법은 현재 액세스 권한 보기를 참조하세요.

  • Cloud Asset API를 사용하여 리소스의 유효한 허용 정책을 가져옵니다. 자세히 알아보려면 유효한 IAM 정책 보기를 참조하세요.

허용 정책에서 특정 역할 바인딩을 찾아야 하는 경우 허용 정책을 검색할 수 있습니다.

Cloud 애셋 인벤토리를 사용하면 지정된 매개변수와 일치하는 역할 바인딩의 허용 정책을 검색할 수 있습니다. 다음과 같은 다양한 검색 매개변수를 사용할 수 있습니다.

  • 리소스 유형
  • 주 구성원 유형
  • 역할
  • 프로젝트
  • 폴더
  • 조직

자세한 내용은 IAM 허용 정책 검색을 참조하세요.