이 페이지에서는 특정 Identity and Access Management(IAM) 권한을 사용하지 못하도록 방지하여 주 구성원 액세스를 거부하는 방법을 설명합니다.
IAM에서는 거부 정책을 사용하여 액세스를 거부합니다. 각 거부 정책은 Google Cloud 조직, 폴더, 프로젝트에 연결됩니다. 거부 정책에는 주 구성원을 식별하고 주 구성원이 사용할 수 없는 권한을 나열하는 거부 규칙이 포함됩니다.
거부 정책은 IAM 정책으로도 알려진 허용 정책과 구분됩니다. 허용 정책은 주 구성원에 IAM 역할을 부여하여 리소스에 대해 액세스 권한을 제공합니다.
Google Cloud CLI 또는 IAM v2
REST API를 사용하여 거부 정책을 관리할 수 있습니다.
시작하기 전에
Enable the IAM API.
인증을 설정합니다.
Select the tab for how you plan to use the samples on this page:
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Terraform
로컬 개발 환경에서 이 페이지의 Terraform 샘플을 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
자세한 내용은 Google Cloud 인증 문서의 로컬 개발 환경 인증 설정을 참조하세요.
Go
이 페이지의 Go 샘플을 로컬 개발 환경에서 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
자세한 내용은 Google Cloud 인증 문서의 로컬 개발 환경 인증 설정을 참조하세요.
자바
이 페이지의 Java 샘플을 로컬 개발 환경에서 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
자세한 내용은 Google Cloud 인증 문서의 로컬 개발 환경 인증 설정을 참조하세요.
Node.js
이 페이지의 Node.js 샘플을 로컬 개발 환경에서 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
자세한 내용은 Google Cloud 인증 문서의 로컬 개발 환경 인증 설정을 참조하세요.
Python
이 페이지의 Python 샘플을 로컬 개발 환경에서 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
자세한 내용은 Google Cloud 인증 문서의 로컬 개발 환경 인증 설정을 참조하세요.
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.
거부 정책 개요를 읽어봅니다.
필요한 역할
거부 정책을 관리하는 데 필요한 권한을 얻으려면 관리자에게 조직에서 다음 IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 거부 정책 관리에 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.
필수 권한
거부 정책을 관리하려면 다음 권한이 필요합니다.
-
거부 정책을 보려면 다음 권한이 필요합니다.
-
iam.denypolicies.get
-
iam.denypolicies.list
-
-
거부 정책을 만들고, 업데이트하고, 삭제하려면 다음 권한이 필요합니다.
-
iam.denypolicies.create
-
iam.denypolicies.delete
-
iam.denypolicies.get
-
iam.denypolicies.update
-
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
거부할 권한 식별
거부 정책을 만들려면 먼저 거부할 권한과 이러한 권한을 거부할 주 구성원을 결정해야 합니다.
일부 권한만 거부할 수 있습니다. 거부할 수 있는 권한의 목록은 거부 정책에서 지원되는 권한을 참조하세요.
경우에 따라 권한 그룹을 사용하여 권한 집합을 거부할 수도 있습니다. 자세한 내용은 권한 그룹을 참조하세요.
권한 이름에 특별한 형식이 필요한
v2
REST API로 거부 정책을 관리합니다. 예를 들어 IAM 커스텀 역할 만들기 권한의 이름은 다음과 같이 지정됩니다.v1
API:iam.roles.create
v2
API:iam.googleapis.com/roles.create
연결 지점 식별
각 거부 정책은 조직, 폴더 또는 프로젝트에 연결됩니다. 이러한 리소스 중 하나에 연결되면 거부 정책은 해당 프로젝트, 폴더 또는 조직의 모든 하위 수준 리소스에 상속됩니다. 거부 정책을 사용하려면 거부 정책이 연결된 리소스의 식별자가 필요합니다. 이를 연결 지점이라고 합니다. 이 식별자는 다음 표의 형식 중 하나를 사용합니다.
연결 지점 형식 조직 cloudresourcemanager.googleapis.com/organizations/ORG_ID
ORG_ID
를 숫자 조직 ID로 바꿉니다. REST API의 경우 전체 값을 URL로 인코딩합니다.gcloud CLI의 예시는 다음과 같습니다.
cloudresourcemanager.googleapis.com/organizations/123456789012
REST API의 예시는 다음과 같습니다.
cloudresourcemanager.googleapis.com%2Forganizations%2F123456789012
폴더 cloudresourcemanager.googleapis.com/folders/FOLDER_ID
FOLDER_ID
를 숫자 폴더 ID로 바꿉니다. REST API의 경우 전체 값을 URL로 인코딩합니다.gcloud CLI의 예시는 다음과 같습니다.
cloudresourcemanager.googleapis.com/folders/987654321098
REST API의 예시는 다음과 같습니다.
cloudresourcemanager.googleapis.com%2Ffolders%2F987654321098
프로젝트 cloudresourcemanager.googleapis.com/projects/PROJECT_ID
PROJECT_ID
를 영숫자 또는 숫자 프로젝트 ID로 바꿉니다. REST API의 경우 전체 값을 URL로 인코딩합니다.gcloud CLI의 예시는 다음과 같습니다.
cloudresourcemanager.googleapis.com/projects/my-project
REST API의 예시는 다음과 같습니다.
cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project
거부 정책 만들기
조직, 폴더, 프로젝트에 거부 정책을 추가할 수 있습니다. 각 리소스에 거부 정책을 최대 500개까지 사용할 수 있습니다.
거부 정책에는 다음을 지정하는 거부 규칙이 포함됩니다.
- 거부할 권한입니다.
- 이러한 권한이 거부된 주 구성원입니다.
선택사항: 권한 거부에서 제외할 주 구성원입니다.
예를 들어 그룹에 권한을 거부할 수 있지만 해당 그룹에 속하는 특정 사용자를 제외할 수 있습니다.
선택사항: 주 구성원이 권한을 사용할 수 없는 경우를 지정하는 조건 표현식입니다. 거부 정책에서 조건 표현식은 리소스 태그에 대한 함수만 사용할 수 있습니다. 다른 함수 및 연산자는 지원되지 않습니다.
각 리소스는 연결된 모든 거부 정책 간에 거부 정책을 최대 500개까지 사용할 수 있습니다.
거부 정책은 리소스 계층을 통해 상속됩니다. 예를 들어 조직 수준에서 권한을 거부하는 경우 해당 권한이 조직 내의 폴더 및 프로젝트에서 그리고 각 프로젝트 내의 서비스 특정 리소스에서 거부됩니다.
거부 정책은 허용 정책을 재정의합니다. 주 구성원에 특정 권한이 포함된 역할이 부여되었지만 거부 정책에 주 구성원이 해당 권한을 사용할 수 없도록 지정된 경우 주 구성원이 권한을 사용할 수 없습니다.
gcloud
리소스에 대해 거부 정책을 만들려면 정책이 포함된 JSON 파일 만들기로 시작합니다. 거부 정책에는 다음 형식이 사용됩니다.
{ "displayName": "POLICY_NAME", "rules": [ { "denyRule": DENY_RULE_1 }, { "denyRule": DENY_RULE_2 }, { "denyRule": DENY_RULE_N } ] }
다음 값을 제공합니다.
POLICY_NAME
: 거부 정책의 표시 이름입니다.-
DENY_RULE_1
,DENY_RULE_2
,...DENY_RULE_N
: 정책의 거부 규칙입니다. 각 거부 규칙에는 다음 필드가 포함될 수 있습니다.-
deniedPermissions
: 지정된 주 구성원이 사용할 수 없는 권한 목록입니다. 권한은 거부 정책에서 지원되어야 합니다.경우에 따라 권한 그룹을 사용하여 권한 집합을 거부할 수도 있습니다. 자세한 내용은 권한 그룹을 참조하세요.
-
deniedPrincipals
: 지정된 권한을 사용할 수 없는 주 구성원의 목록입니다. 주 구성원 식별자에 대해v2
API 형식을 사용합니다. -
exceptionPrincipals
: (선택사항) 주 구성원이deniedPrincipals
에 포함된 경우에도 지정된 권한을 사용할 수 있는 주 구성원 목록입니다. 예를 들어 이 필드를 사용하여 거부된 그룹에 속하는 특정 사용자에 대해 예외를 설정할 수 있습니다. 주 구성원 식별자에 대해v2
API 형식을 사용합니다. -
denialCondition
: (선택사항) 주 구성원이 권한을 사용할 수 없는 경우를 지정하는 조건 표현식입니다. 다음 필드가 포함됩니다.-
expression
: Common Expression Language(CEL) 문법을 사용하는 조건 표현식입니다. 이 표현식은 리소스 태그 평가를 위해 CEL 함수를 사용해야 합니다. 다른 함수 및 연산자는 지원되지 않습니다. -
title
: (선택사항) 조건 목적에 대한 간단한 요약입니다. -
description
: (선택사항) 조건에 대한 자세한 설명입니다.
-
거부 규칙 예시는 일반 사용 사례를 참조하세요.
-
예를 들어 다음 거부 정책에는
lucian@example.com
사용자에 대해 하나의 권한을 거부하는 하나의 거부 규칙이 포함됩니다.{ "displayName": "My deny policy.", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }
그런 후
gcloud iam policies create
명령어를 실행합니다.gcloud iam policies create POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --policy-file=POLICY_FILE
다음 값을 제공합니다.
-
POLICY_ID
: 거부 정책의 식별자입니다. -
ATTACHMENT_POINT
: 거부 정책이 연결된 리소스의 식별자입니다. 이 값의 형식을 지정하는 방법은 이 페이지의 연결 지점 식별을 참조하세요. -
POLICY_FILE
: 거부 정책을 포함하는 JSON 파일의 파일 경로입니다.
기본적으로 이 명령어는 성공하더라도 출력을 표시하지 않습니다. 자세한 응답을 출력하려면 명령어에
--format=json
플래그를 추가합니다.예를 들어 다음 명령어는
policy.json
이라는 파일을 사용하여my-project
프로젝트에 대해my-deny-policy
라는 거부 정책을 만듭니다.gcloud iam policies create my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --policy-file=policy.json
Terraform
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요. 자세한 내용은 Terraform 제공업체 참고 문서를 확인하세요.
Go
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Go API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Java
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Java API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Node.js
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Node.js API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Python
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Python API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
REST
policies.createPolicy
메서드는 리소스에 대해 거부 정책을 만듭니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
-
ENCODED_ATTACHMENT_POINT
: 거부 정책이 연결된 리소스의 URL 인코딩 식별자입니다. 이 값의 형식을 지정하는 방법은 이 페이지의 연결 지점 식별을 참조하세요. POLICY_ID
: 거부 정책의 식별자입니다.POLICY_NAME
: 거부 정책의 표시 이름입니다.-
DENY_RULE_1
,DENY_RULE_2
,...DENY_RULE_N
: 정책의 거부 규칙입니다. 각 거부 규칙에는 다음 필드가 포함될 수 있습니다.-
deniedPermissions
: 지정된 주 구성원이 사용할 수 없는 권한 목록입니다. 권한은 거부 정책에서 지원되어야 합니다.경우에 따라 권한 그룹을 사용하여 권한 집합을 거부할 수도 있습니다. 자세한 내용은 권한 그룹을 참조하세요.
-
deniedPrincipals
: 지정된 권한을 사용할 수 없는 주 구성원의 목록입니다. 주 구성원 식별자에 대해v2
API 형식을 사용합니다. -
exceptionPrincipals
: (선택사항) 주 구성원이deniedPrincipals
에 포함된 경우에도 지정된 권한을 사용할 수 있는 주 구성원 목록입니다. 예를 들어 이 필드를 사용하여 거부된 그룹에 속하는 특정 사용자에 대해 예외를 설정할 수 있습니다. 주 구성원 식별자에 대해v2
API 형식을 사용합니다. -
denialCondition
: (선택사항) 주 구성원이 권한을 사용할 수 없는 경우를 지정하는 조건 표현식입니다. 다음 필드가 포함됩니다.-
expression
: Common Expression Language(CEL) 문법을 사용하는 조건 표현식입니다. 이 표현식은 리소스 태그 평가를 위해 CEL 함수를 사용해야 합니다. 다른 함수 및 연산자는 지원되지 않습니다. -
title
: (선택사항) 조건 목적에 대한 간단한 요약입니다. -
description
: (선택사항) 조건에 대한 자세한 설명입니다.
-
거부 규칙 예시는 일반 사용 사례를 참조하세요.
-
HTTP 메서드 및 URL:
POST https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies?policyId=POLICY_ID
JSON 요청 본문:
{ "displayName": "POLICY_NAME", "rules": [ { "denyRule": DENY_RULE_1 }, { "denyRule": DENY_RULE_2 }, { "denyRule": DENY_RULE_N } ] }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/89cb3e508bf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2022-06-28T19:06:12.455151Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-06-28T22:26:21.968687Z" "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] } }
응답은 장기 실행 작업을 식별합니다. 장기 실행 작업의 상태를 모니터링하여 완료되는 시간을 찾아낼 수 있습니다. 자세한 내용은 이 페이지에서 장기 실행 작업의 상태 확인을 참조하세요.
거부 정책 나열
리소스는 거부 정책을 여러 개 포함할 수 있습니다. 리소스에 연결된 모든 거부 정책을 나열한 후 각 거부 정책을 확인하여 각 정책의 거부 규칙을 볼 수 있습니다.
gcloud
리소스의 거부 정책을 나열하려면
gcloud iam policies list
명령어를 실행합니다.gcloud iam policies list \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
다음 값을 제공합니다.
-
ATTACHMENT_POINT
: 거부 정책이 연결된 리소스의 식별자입니다. 이 값의 형식을 지정하는 방법은 이 페이지의 연결 지점 식별을 참조하세요.
예를 들어 다음 명령어는 해당 숫자 ID가
123456789012
인 조직에 연결된 거부 정책을 나열합니다.gcloud iam policies list \ --attachment-point=cloudresourcemanager.googleapis.com/organizations/123456789012 \ --kind=denypolicies \ --format=json
Go
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Go API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Java
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Java API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Node.js
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Node.js API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Python
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Python API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
REST
policies.listPolicies
메서드는 리소스에 대해 거부 정책을 나열합니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
-
ENCODED_ATTACHMENT_POINT
: 거부 정책이 연결된 리소스의 URL 인코딩 식별자입니다. 이 값의 형식을 지정하는 방법은 이 페이지의 연결 지점 식별을 참조하세요.
HTTP 메서드 및 URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "policies": [ { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-06-28T22:26:21.968687Z" }, { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy-2", "uid": "8465d710-ea20-0a08-d92c-b2a3ebf766ab", "kind": "DenyPolicy", "displayName": "My second deny policy.", "createTime": "2022-06-05T19:21:53.595455Z", "updateTime": "2022-06-05T19:21:53.595455Z" }, { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy-3", "uid": "ee9f7c2f-7e8c-b05c-d4e5-e03bfb2954e0", "kind": "DenyPolicy", "displayName": "My third deny policy.", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z" } ] }
거부 정책 보기
거부된 권한, 권한을 사용할 수 없는 주 구성원 등 거부 정책을 확인하여 포함된 거부 규칙을 볼 수 있습니다.
gcloud
리소스의 거부 정책을 가져오려면
gcloud iam policies get
명령어를 실행합니다.gcloud iam policies get POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
다음 값을 제공합니다.
-
POLICY_ID
: 거부 정책의 식별자입니다. -
ATTACHMENT_POINT
: 거부 정책이 연결된 리소스의 식별자입니다. 이 값의 형식을 지정하는 방법은 이 페이지의 연결 지점 식별을 참조하세요.
예를 들어 다음 명령어는
my-project
프로젝트에 대해my-deny-policy
라는 거부 정책을 가져오고 이를policy.json
이라는 파일에 저장합니다.gcloud iam policies get my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --format=json \ > ./policy.json
Go
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Go API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Java
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Java API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Node.js
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Node.js API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Python
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Python API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
REST
policies.get
메서드는 리소스에 대해 거부 정책을 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
-
ENCODED_ATTACHMENT_POINT
: 거부 정책이 연결된 리소스의 URL 인코딩 식별자입니다. 이 값의 형식을 지정하는 방법은 이 페이지의 연결 지점 식별을 참조하세요. POLICY_ID
: 거부 정책의 식별자입니다.
HTTP 메서드 및 URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }
거부 정책 업데이트
거부 정책을 만든 후에는 여기에 포함된 거부 규칙은 물론 해당 표시 이름을 업데이트할 수 있습니다.
거부 정책을 업데이트하려면 읽기-수정-쓰기 패턴을 사용합니다.
- 정책의 현재 버전을 읽습니다.
- 필요에 따라 정책의 정보를 수정합니다.
- 업데이트된 정책을 작성합니다.
거부 정책 읽기
gcloud
리소스의 거부 정책을 가져오려면
gcloud iam policies get
명령어를 실행합니다.gcloud iam policies get POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
다음 값을 제공합니다.
-
POLICY_ID
: 거부 정책의 식별자입니다. -
ATTACHMENT_POINT
: 거부 정책이 연결된 리소스의 식별자입니다. 이 값의 형식을 지정하는 방법은 이 페이지의 연결 지점 식별을 참조하세요.
예를 들어 다음 명령어는
my-project
프로젝트에 대해my-deny-policy
라는 거부 정책을 가져오고 이를policy.json
이라는 파일에 저장합니다.gcloud iam policies get my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --format=json \ > ./policy.json
Go
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Go API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Java
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Java API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Node.js
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Node.js API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Python
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Python API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
REST
policies.get
메서드는 리소스에 대해 거부 정책을 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
-
ENCODED_ATTACHMENT_POINT
: 거부 정책이 연결된 리소스의 URL 인코딩 식별자입니다. 이 값의 형식을 지정하는 방법은 이 페이지의 연결 지점 식별을 참조하세요. POLICY_ID
: 거부 정책의 식별자입니다.
HTTP 메서드 및 URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }
거부 정책 수정
거부 정책을 수정하려면 IAM에서 이전에 읽은 정책의 사본을 변경합니다. 표시 이름을 업데이트하거나 거부 규칙을 추가, 변경, 삭제할 수 있습니다. 업데이트된 정책을 작성할 때까지는 변경사항이 적용되지 않습니다.
예를 들어 기존 거부 규칙에 권한을 추가할 수 있습니다.
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2021-10-05T19:22:26.770543Z", "updateTime": "2021-10-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] }
업데이트된 거부 정책 작성
로컬로 거부 정책을 수정한 후에는 업데이트된 거부 정책을 IAM에 작성해야 합니다.
각 거부 정책에는 정책 버전을 식별하는
etag
필드가 포함됩니다.etag
는 정책을 업데이트할 때마다 변경됩니다. 업데이트된 정책을 작성할 때 요청의etag
는 IAM에 저장된 현재etag
와 일치해야 합니다. 값이 일치하지 않으면 요청이 실패합니다. 이 기능은 동시 변경사항이 서로 덮어쓰지 않도록 방지하는 데 도움이 됩니다.gcloud
리소스의 거부 정책을 업데이트하려면
gcloud iam policies update
명령어를 실행합니다.gcloud iam policies update POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --policy-file=POLICY_FILE
다음 값을 제공합니다.
-
POLICY_ID
: 거부 정책의 식별자입니다. -
ATTACHMENT_POINT
: 거부 정책이 연결된 리소스의 식별자입니다. 이 값의 형식을 지정하는 방법은 이 페이지의 연결 지점 식별을 참조하세요. -
POLICY_FILE
: 거부 정책을 포함하는 JSON 파일의 파일 경로입니다.
기본적으로 이 명령어는 성공하더라도 출력을 표시하지 않습니다. 자세한 응답을 출력하려면 명령어에
--format=json
플래그를 추가합니다.예를 들어 다음 명령어는
policy.json
이라는 파일을 사용하여my-project
프로젝트에 대해my-deny-policy
라는 거부 정책을 업데이트합니다.gcloud iam policies update my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --policy-file=policy.json
Go
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Go API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Java
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Java API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Node.js
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Node.js API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Python
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Python API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
REST
policies.update
메서드는 거부 정책을 업데이트합니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
-
ENCODED_ATTACHMENT_POINT
: 거부 정책이 연결된 리소스의 URL 인코딩 식별자입니다. 이 값의 형식을 지정하는 방법은 이 페이지의 연결 지점 식별을 참조하세요. POLICY_ID
: 거부 정책의 식별자입니다.-
POLICY
: 업데이트된 거부 정책입니다.예를 들어 이전 단계에 표시된 정책에 권한을 추가하려면
POLICY
를 다음으로 바꿉니다.{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] }
HTTP 메서드 및 URL:
PUT https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
JSON 요청 본문:
POLICY
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/8b2d0ab2daf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2021-10-05T22:26:21.968687Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTgxNTIxNDE3NTYxNjQxODYxMTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T22:26:21.968687Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] } }
응답은 장기 실행 작업을 식별합니다. 장기 실행 작업의 상태를 모니터링하여 완료되는 시간을 찾아낼 수 있습니다. 자세한 내용은 이 페이지에서 장기 실행 작업의 상태 확인을 참조하세요.
거부 정책 삭제
더 이상 거부 정책에 규칙을 적용하지 않으려면 거부 정책을 삭제할 수 있습니다.
선택적으로 삭제 중인 정책 버전에 대해
etag
를 지정할 수 있습니다.etag
를 지정할 경우 IAM에 저장된 현재etag
와 일치해야 합니다. 값이 일치하지 않으면 요청이 실패합니다. 이 기능을 사용하면 해당 정책의 업데이트된 버전 대신 의도된 정책을 삭제하는지 확인할 수 있습니다.요청에서
etag
를 생략하면 IAM이 정책을 무조건적으로 삭제합니다.gcloud
리소스에서 거부 정책을 삭제하려면
gcloud iam policies delete
명령어를 실행합니다.gcloud iam policies delete POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies
다음 값을 제공합니다.
-
POLICY_ID
: 거부 정책의 식별자입니다. -
ATTACHMENT_POINT
: 거부 정책이 연결된 리소스의 식별자입니다. 이 값의 형식을 지정하는 방법은 이 페이지의 연결 지점 식별을 참조하세요.
선택적으로
--etag=ETAG
플래그를 추가할 수 있습니다.ETAG
를 거부 정책에 대해 현재etag
값으로 바꿉니다.기본적으로 이 명령어는 성공하더라도 출력을 표시하지 않습니다. 자세한 응답을 출력하려면 명령어에
--format=json
플래그를 추가합니다.예를 들어 다음 명령어는
my-project
프로젝트에서my-deny-policy
라는 거부 정책을 삭제합니다.gcloud iam policies delete my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies
Go
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Go API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Java
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Java API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Node.js
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Node.js API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
Python
IAM용 클라이언트 라이브러리를 설치하고 사용하는 방법은 IAM 클라이언트 라이브러리를 참조하세요. 자세한 내용은 IAM Python API 참고 문서를 참조하세요.
IAM에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 시작하기 전에를 참조하세요.
REST
policies.delete
메서드는 리소스에서 거부 정책을 삭제합니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
-
ENCODED_ATTACHMENT_POINT
: 거부 정책이 연결된 리소스의 URL 인코딩 식별자입니다. 이 값의 형식을 지정하는 방법은 이 페이지의 연결 지점 식별을 참조하세요. POLICY_ID
: 거부 정책의 식별자입니다.-
ETAG
: (선택사항) 정책 버전에 대한 식별자입니다. 존재하는 경우 이 값이 정책의 현재etag
값과 일치해야 합니다.
HTTP 메서드 및 URL:
DELETE https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID?etag=ETAG
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/8223fe308bf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2021-10-05T19:45:00.133311Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-07-05T19:45:00.133311Z", "deleteTime": "2022-07-05T19:45:00.133311Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] } }
응답은 장기 실행 작업을 식별합니다. 장기 실행 작업의 상태를 모니터링하여 완료되는 시간을 찾아낼 수 있습니다. 자세한 내용은 이 페이지에서 장기 실행 작업의 상태 확인을 참조하세요.
장기 실행 작업의 상태 확인
REST API 또는 클라이언트 라이브러리를 사용할 때 거부 정책을 변경하는 메서드는 장기 실행 작업 또는 LRO를 반환합니다. 장기 실행 작업은 요청의 상태를 추적하고 정책 변경이 완료되었는지 여부를 나타냅니다.
Go
이 페이지의 코드 샘플은 장기 실행 작업이 완료될 때까지 기다린 후 결과에 액세스하는 방법을 보여줍니다.
Java
이 페이지의 코드 샘플은 장기 실행 작업이 완료될 때까지 기다린 후 결과에 액세스하는 방법을 보여줍니다.
Node.js
이 페이지의 코드 샘플은 장기 실행 작업이 완료될 때까지 기다린 후 결과에 액세스하는 방법을 보여줍니다.
Python
이 페이지의 코드 샘플은 장기 실행 작업이 완료될 때까지 기다린 후 결과에 액세스하는 방법을 보여줍니다.
REST
policies.operations.get
메서드는 장기 실행 작업의 상태를 반환합니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
-
ENCODED_ATTACHMENT_POINT
: 거부 정책이 연결된 리소스의 URL 인코딩 식별자입니다. 이 값의 형식을 지정하는 방법은 이 페이지의 연결 지점 식별을 참조하세요. -
OPERATION_ID
: 작업의 식별자입니다. 작업 이름의 일부로 원래 요청에 대한 응답으로 이 식별자가 수신됩니다. 작업 이름의 끝에 16진수 값을 사용합니다. 예를 들면89cb3e508bf1ff01
입니다.
HTTP 메서드 및 URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/operations/OPERATION_ID
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/89cb3e508bf1ff01", "done": true }
작업의
done
필드가 없으면 작업을 반복적으로 가져와서 해당 상태를 계속 모니터링합니다. 잘린 지수 백오프를 사용하여 각 요청 간에 지연을 일으킵니다.done
필드가true
로 설정되었으면 작업이 완료되었고 작업 가져오기를 중지할 수 있습니다.다음 단계
- 거부 정책에서 지원되는 권한 식별
- 거부 정책의 주 구성원 식별자 형식 가져오기
- 거부 정책 액세스 문제 해결 방법 알아보기
- 주 구성원 액세스 거부 자세히 알아보기
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-11-25(UTC)