이 페이지에서는 허용 정책에서 조건부 역할 바인딩을 사용하여 특정 리소스에 대해 액세스를 관리하는 방법을 설명합니다. 조건 표현식에서 리소스 속성을 사용하면 주 구성원이 권한을 사용하여 리소스 이름, 유형, Google Cloud 서비스를 기준으로 리소스에 액세스할 수 있는지 여부를 제어할 수 있습니다.
시작하기 전에
- IAM 조건부 역할 바인딩의 기본 사항을 이해하기 위해서는 Identity and Access Management(IAM) 조건 개요를 참조하세요.
- 조건 표현식에서 사용할 수 있는 리소스 속성을 검토하세요.
- 리소스 이름 속성은 다음 Google Cloud 서비스에 대한 액세스를 제어할 수 있습니다.
- Apigee
- Application Integration
- Apigee API 허브
- 백업 및 DR 서비스
- BigQuery
- BigQuery Reservation API
- Bigtable
- Binary Authorization
- Cloud Deploy
- Cloud Key Management Service
- Cloud Logging
- Cloud SQL
- Cloud Storage
- Compute Engine
- Dataform
- Google Kubernetes Engine
- Firestore
- Cloud NGFW
- Integration Connectors
- Apache Kafka용 Google Cloud 관리형 서비스
- Parameter Manager
- Pub/Sub 라이트
- Secret Manager
- Spanner
필요한 역할
조건부 역할 바인딩을 관리하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
프로젝트에 대한 액세스를 관리하는 데 필요한 권한:
프로젝트에 대한 프로젝트 IAM 관리자(
roles/resourcemanager.projectIamAdmin) -
폴더에 대한 액세스를 관리하는 데 필요한 권한:
폴더에 대한 폴더 관리자(
roles/resourcemanager.folderAdmin) -
프로젝트, 폴더, 조직에 대한 액세스를 관리하는 데 필요한 권한: 조직에 대한 조직 관리자(
roles/resourcemanager.organizationAdmin) -
거의 모든 Google Cloud 리소스에 대한 액세스를 관리하는 데 필요한 권한: 액세스를 관리하려는 리소스가 있는 프로젝트, 폴더 또는 조직에 대한 보안 관리자(
roles/iam.securityAdmin)
역할 부여 방법에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
사전 정의된 역할에는 조건부 역할 바인딩을 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
조건부 역할 바인딩을 관리하려면 다음 권한이 필요합니다.
-
프로젝트에 대한 액세스 권한 관리:
- 프로젝트에 대한
resourcemanager.projects.getIamPolicy - 프로젝트에 대한
resourcemanager.projects.setIamPolicy
- 프로젝트에 대한
-
폴더에 대한 액세스 관리:
-
폴더에 대한
resourcemanager.folders.getIamPolicy -
폴더에 대한
resourcemanager.folders.setIamPolicy
-
폴더에 대한
-
조직에 대한 액세스 권한 관리:
-
조직에 대한
resourcemanager.organizations.getIamPolicy -
조직에 대한
resourcemanager.organizations.setIamPolicy
-
조직에 대한
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
리소스 이름 프리픽스를 기반으로 리소스 그룹에 액세스 권한 부여
조건부 역할 바인딩을 사용하면 이름이 특정 문자열로 시작하는 Compute Engine 가상 머신(VM) 인스턴스와 같이 리소스 이름이 프리픽스와 일치하는 리소스 주 구성원에게 액세스 권한을 부여할 수 있습니다. 리소스 이름 프리픽스는 일반적으로 특정 목적을 위한 리소스 또는 특정 속성이 있는 리소스를 그룹화하는 데 사용됩니다.
예를 들어 민감한 의료 데이터를 사용하는 특정 VM 인스턴스에서 워크로드를 실행한다고 가정해보세요. 민감하지 않은 다른 워크로드는 동일한 프로젝트에서 실행되어야 하며 개발자가 민감한 정보를 사용하는 VM 인스턴스에 제한적으로 액세스하도록 설정하려고 합니다. 이 목표를 달성하기 위해 민감한 데이터를 사용하는 VM 인스턴스에는 sensitiveAccess 프리픽스를 사용하여 이름을 지정하고 다른 VM 인스턴스에는 devAccess 프리픽스를 사용합니다. 그런 후 조건부 역할 바인딩을 사용하여 개발자가 일반적인 devAccess VM 인스턴스는 계속 사용할 수 있지만 sensitiveAccess VM 인스턴스에는 액세스 권한을 부여하지 않도록 합니다.
resource.name 조건 속성만 사용하여 액세스를 관리할 수도 있지만 resource.type 속성과 resource.service 속성도 사용하는 것이 일반적입니다. 이러한 추가 속성을 사용하면 유사한 이름의 다른 리소스 유형에 대한 액세스에 조건이 영향을 미칠 가능성이 낮아집니다.
이 섹션의 예시에서는 resource.name 속성과 resource.type 속성을 모두 사용하여 액세스를 제어합니다.