Google Cloud 는 특정 Google Cloud 리소스에 대한 세부적인 액세스 권한을 부여하고 다른 리소스에 대한 무단 액세스를 방지할 수 있는 Identity and Access Management (IAM)를 제공합니다. IAM을 사용하면 최소 권한의 보안 원칙을 적용하여 필요한 리소스에 대한 액세스 권한만 부여할 수 있습니다.
IAM을 사용하면 허용 정책을 설정하여 어떠한 리소스에 대해 누구 (사용자)에게 어떠한 액세스 권한 (역할)이 있는지 제어할 수 있습니다. 허용 정책은 사용자에게 특정 역할을 부여하여 특정 권한을 부여합니다.
이 페이지에서는 조직 리소스에서 사용할 수 있는 IAM 역할과 Cloud Resource Manager API를 사용하여 조직 리소스의 허용 정책을 만들고 관리하는 방법을 설명합니다. 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
권한 및 역할
리소스에 대한 액세스 권한을 제어하려면 Google Cloud API 요청을 보내는 계정에 적절한 IAM 역할이 있어야 합니다. IAM 역할에는 사용자가Google Cloud 리소스에서 특정 작업을 수행할 수 있도록 허용하는 권한이 포함되어 있습니다. 예를 들어 resourcemanager.organizations.get 권한이 있는 사용자는 조직 리소스에 대한 세부정보를 가져올 수 있습니다.
사용자에게 권한을 직접 부여하는 대신 하나 이상의 권한이 번들로 포함된 역할을 부여합니다.
동일한 리소스에 하나 이상의 역할을 부여할 수 있습니다.
사전 정의된 역할 사용
다음 표에는 조직 리소스의 속성에 액세스하기 위해 부여할 수 있는 역할, 각 역할에 대한 설명, 각 역할에 포함된 권한이 나와 있습니다.
| 역할 | 권한 |
|---|---|
조직 관리자( IAM 정책을 관리하고 조직, 폴더, 프로젝트의 조직 정책을 확인할 수 있는 액세스 권한입니다. 이 역할을 부여할 수 있는 최하위 수준 리소스:
|
|
조직 뷰어( 조직을 볼 수 있는 액세스 권한을 제공합니다. 이 역할을 부여할 수 있는 최하위 수준 리소스:
|
|
조직 정책 관리자( 조직 정책을 설정하여 조직에서 클라우드 리소스 구성에 적용하려는 제한사항을 정의할 수 있는 액세스 권한을 제공합니다. 이 역할을 부여할 수 있는 최하위 수준 리소스:
|
|
브라우저( 폴더, 조직, 허용 정책을 포함한 프로젝트 계층 구조를 탐색할 수 있는 읽기 액세스 권한입니다. 프로젝트의 리소스를 볼 수 있는 권한은 포함되어 있지 않습니다. 이 역할을 부여할 수 있는 최하위 수준 리소스:
|
|
커스텀 역할 만들기
이 항목에서 설명하는 사전 정의된 역할 외에, 요구사항에 맞게 조정하는 권한 컬렉션인 커스텀 역할을 만들 수도 있습니다. Resource Manager에 사용할 커스텀 역할을 만들 때 다음 사항에 유의하세요.resourcemanager.projects.get/list같은 List 및 get 권한은 항상 쌍으로 부여해야 합니다.- 커스텀 역할에
folders.list및folders.get권한이 있는 경우projects.list및projects.get권한도 있어야 합니다. - 조직, 폴더, 프로젝트 리소스에 대한
setIamPolicy권한이 있는 사용자는 기타 모든 권한을 부여할 수 있으므로 주의해서 할당해야 합니다.
조직 리소스에 대한 기존 액세스 보기
리소스의 허용 정책을 가져와서 조직 리소스의 사용자에게 부여된 역할을 볼 수 있습니다. Google Cloud 콘솔, Google Cloud CLI 또는 getIamPolicy() 메서드를 사용하여 조직 리소스의 허용 정책을 볼 수 있습니다.
콘솔
Google Cloud 콘솔을 사용하여 조직 리소스 수준에서 부여된 역할을 보려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
조직 드롭다운 메뉴에서 조직 리소스를 선택합니다.
조직 리소스의 체크박스를 선택합니다.
정보 패널의 권한에서 역할을 펼치기하여 해당 역할이 있는 모든 구성원을 표시합니다.
gcloud
get-iam-policy 명령어를 사용하여 조직 리소스의 허용 정책을 가져옵니다.
gcloud alpha organizations get-iam-policy <var>ORGANIZATION_ID</var> --format json >
<var>FILENAME.JSON</var>
이 명령어는 다음과 유사한 허용 정책을 출력합니다.
bindings:
- members:
- user:testuser1@gcp-test.com
role: roles/editor
- members:
- user:admin@gcp-test.com
role:roles/resourcemanager.organizationAdmin
- members:
- user:testuser2@gcp-test.com
role: roles/resourcemanager.projectCreator
etag": "BwU1aRxWk30="
API
다음 코드 스니펫은 조직 리소스 https://cloudresourcemanager.googleapis.com/v3/organizations/12345의 허용 정책을 반환합니다.
요청:
POST
https://cloudresourcemanager.googleapis.com/v3/organizations/12345:getIamPolicy
응답:
{
"bindings": [
{
"role": "roles/resourcemanager.organizationAdmin",
"members": [
"user:email1@gmail.com"
]
},
{
"role": "roles/resourcemanager.projectCreator",
"members": [
"user:email2@gmail.com",
"user:email3@gmail.com",
"serviceAccount:my-other-app@appspot.gserviceaccount.com"
]
}
]
"etag": "BwUjHYKHHiQ="
}
Python
getIamPolicy() 메서드를 사용하면 이전에 설정된 허용 정책을 가져올 수 있습니다.
crm = discovery.build(
'cloudresourcemanager', 'v3', http=creds.authorize(httplib2.Http()))
policy = crm.organizations().getIamPolicy(
resource=flags.organizationId, body={}).execute()
print json.dumps(policy, indent=2)
조직 리소스에 대한 액세스 권한 부여
조직 관리자는 조직의 리소스와 API에 액세스할 수 있도록 팀 구성원에게 IAM 역할을 부여할 수 있습니다. 사용자 계정 이메일, Google 그룹, 서비스 계정 또는 G Suite 도메인에 역할을 부여할 수 있습니다. Google Cloud 콘솔, gcloud CLI 또는 setIamPolicy() 메서드를 사용하여 역할을 부여할 수 있습니다.
콘솔
Google Cloud 콘솔을 사용하여 조직 리소스 수준에서 액세스 제어를 설정하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
조직 드롭다운 메뉴에서 조직 리소스를 선택합니다.
조직 리소스의 체크박스를 선택합니다. 폴더 리소스가 없으면 조직 리소스가 표시되지 않습니다. 계속하려면 IAM 페이지를 통한 역할 부여에 대한 안내를 확인하세요.
오른쪽의 정보 패널이 숨겨져 있는 경우 오른쪽 상단에서 정보 패널 표시를 클릭합니다.
정보 패널의 권한 탭에서 구성원 추가를 클릭합니다.
새 구성원 입력란에 추가할 팀 구성원을 입력합니다. 사용자 계정 이메일, Google 그룹, 서비스 계정 또는 G Suite 도메인을 지정할 수 있습니다.
역할 선택 드롭다운 메뉴에서 팀 구성원에게 부여할 역할을 선택합니다.
추가를 클릭합니다.
gcloud
gcloud 명령어를 사용하여 조직 리소스의 허용 정책을 설정하려면 다음 단계에 따르세요.
get-iam-policy명령어를 사용하여 조직 리소스의 허용 정책을 가져오고 정책을 JSON 파일로 출력합니다.gcloud alpha organizations get-iam-policy <var>ORGANIZATION_ID</var> --format json > <var>FILENAME.JSON</var>JSON 파일의 내용은 다음과 유사합니다.
{
"bindings": [
{
"members": [
"user:testuser1@gcp-test.com"
],
"role": "roles/editor"
},