IAM으로 액세스 제어
이 페이지에서는 Certificate Authority Service의 IAM 역할을 설명합니다.
CA Service는 액세스 제어에 Identity and Access Management(IAM) 역할을 사용합니다. IAM을 사용하면 누가(ID) 어떤 리소스에 대한 어떤 액세스 권한(역할)을 갖는지 정의하여 액세스를 제어할 수 있습니다. IAM 역할에는 사용자가 Google Cloud리소스에서 특정 작업을 수행할 수 있게 해주는 권한 집합이 포함되어 있습니다. IAM 역할을 부여하는 동안 최소 권한의 원칙을 따르면 Certificate Authority Service 리소스의 무결성을 보호하고 CA 풀과 전체 공개 키 인프라(PKI)의 보안을 관리할 수 있습니다.
IAM 역할을 사용자나 서비스 계정에 할당하는 방법은 IAM 문서에서 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요.
사전 정의된 역할
다음 표에서는 사전 정의된 IAM 역할과 각 역할과 연결된 권한을 보여줍니다.
| 역할 | 권한 | 설명 | 
|---|---|---|
| CA Service 감사자 roles/privateca.auditor | privateca.caPools.getprivateca.caPools.getIamPolicyprivateca.caPools.listprivateca.certificateAuthorities.listprivateca.certificateAuthorities.getprivateca.certificateTemplates.getprivateca.certificateTemplates.getIamPolicyprivateca.certificateTemplates.listprivateca.certificates.listprivateca.certificates.getprivateca.locations.getprivateca.locations.listprivateca.operations.getprivateca.operations.listprivateca.certificateRevocationLists.listprivateca.certificateRevocationLists.getprivateca.certificateRevocationLists.getIamPolicyresourcemanager.projects.getresourcemanager.projects.list | CA Service 감사자 역할은 모든 CA Service 리소스에 대한 읽기 전용 액세스 권한을 가지며 CA 풀, CA, 인증서, 해지 목록, IAM 정책, 프로젝트의 속성을 검색하고 나열할 수 있습니다. CA 풀의 보안 및 운영을 검증할 책임이 있고 서비스 관리를 위한 일일 책임이 할당되지 않은 개별 사용자에게 이 역할을 할당하는 것이 좋습니다. | 
| CA Service 인증서 요청자 roles/privateca.certificateRequester | privateca.certificates.create | CA Service 인증서 요청자 역할은 CA 풀에 인증서 요청을 제출할 수 있습니다. 인증서를 요청할 수 있는 신뢰할 수 있는 개별 사용자에게 이 역할을 부여하는 것이 좋습니다. 이 역할을 가진 사용자는 발급 정책에 따라 임의의 인증서를 요청할 수 있습니다. CA Service 인증서 관리자 역할과 달리 이 역할에서는 사용자가 새로 발급된 인증서를 가져오거나 나열하거나 CA 풀에 대한 정보를 가져올 수 없습니다. | 
| CA Service 워크로드 인증서 요청자 roles/privateca.workloadCertificateRequester | privateca.certificates.createForSelf | CA Service 워크로드 인증서 요청자는 CA Service의 인증서를 호출자 ID로 요청할 수 있습니다. | 
| CA Service 인증서 관리자 roles/privateca.certificateManager | roles/privateca.auditor의 모든 권한 및 다음 권한:privateca.certificates.create | CA Service 인증서 관리자는 CA Service 인증서 요청자와 같은 CA 풀에 인증서 발급 요청을 제출할 수 있습니다. 또한 이 역할은 CA Service 감사자 역할의 권한도 상속합니다. 관리자 또는 리드 엔지니어와 같은 CA 풀에서 인증서 요청을 생성, 추적, 검토할 수 있는 개인에게 이 역할을 할당하는 것이 좋습니다. | 
| CA Service 인증서 템플릿 사용자 roles/privateca.templateUser | privateca.certificateTemplates.getprivateca.certificateTemplates.listprivateca.certificateTemplates.use | CA Service 인증서 템플릿 사용자는 인증서 템플릿을 읽고 나열하고 사용할 수 있습니다. | 
| CA Service 작업 관리자 roles/privateca.caManager | roles/privateca.auditor의 모든 권한 및 다음 권한:privateca.certificates.updateprivateca.caPools.createprivateca.caPools.deleteprivateca.caPools.updateprivateca.certificateAuthorities.createprivateca.certificateAuthorities.deleteprivateca.certificateAuthorities.updateprivateca.certificateRevocationLists.updateprivateca.certificateTemplates.createprivateca.certificateTemplates.deleteprivateca.certificateTemplates.updateprivateca.certificates.updateprivateca.operations.cancelprivateca.operations.deleteresourcemanager.projects.getresourcemanager.projects.liststorage.buckets.create | CA Service 작업 관리자는 CA 풀과 CA를 만들고 업데이트하고 삭제할 수 있습니다. 이 역할은 또한 인증서를 취소하고 Cloud Storage 버킷을 만듭니다. 또한 CA Service 감사자와 동일한 기능이 포함됩니다. 이 역할에서 개별 사용자는 CA 풀 발급 정책의 구성과 함께 조직에서 CA 풀을 구성하고 배포할 책임이 있습니다. 이 역할은 인증서 만들기를 허용하지 않습니다. 이렇게 하려면 CA Service 인증서 요청자, CA Service 인증서 관리자 또는 CA Service 관리자 역할을 사용합니다. | 
| CA 서비스 풀 리더 roles/privateca.poolReader | privateca.caPools.get | CA 서비스 풀 리더 역할이 있는 사용자는 CA 서비스에서 CA 풀을 읽을 수 있습니다. | 
| CA Service 관리자 roles/privateca.admin | roles/privateca.certificateManager,roles/privateca.caManager의 모든 권한 및 다음 권한:privateca.*.setIamPolicyprivateca.caPools.useprivateca.operations.cancelprivateca.operations.deleteresourcemanager.projects.getresourcemanager.projects.liststorage.buckets.create | CA Service 관리자 역할은 CA Service 작업 관리자 및 CA Service 인증서 관리자 역할의 권한을 상속합니다. 이 역할은 CA Service 내에서 모든 작업을 수행할 수 있습니다. CA Service 관리자는 CA 풀의 IAM 정책을 설정하고 Cloud Storage 버킷을 만들 수 있습니다. 서비스가 설정된 후에는 이 역할을 거의 할당하지 않는 것이 좋습니다. 이 역할에서 개인은 다른 사람에게 권한을 할당하고 CA Service에서 인증서 요청을 관리하는 등 관리의 모든 측면을 수행할 수 있습니다. 승인되지 않은 액세스 또는 사용을 방지하기 위해 이 역할 계정에 특수 제어 및 액세스를 구현하는 것이 좋습니다. | 
CA Service 서비스 에이전트 역할
CA 생성 중에 기존 Cloud KMS 서명 키 또는 Cloud Storage 버킷을 제공할 때 CA Service 서비스 에이전트 서비스 계정(service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com)에는 각 리소스에 대한 액세스 권한을 부여해야 합니다.
Cloud KMS의 경우에 roles/cloudkms.signerVerifier은 서명 키를 사용하고 공개 키를 읽기 위해 필요합니다. roles/viewer는 Cloud Monitoring 통합을 위해 키를 모니터링하는 데 필요합니다.
Cloud Storage의 경우에 roles/storage.objectAdmin은 CA 인증서 및 CRL을 버킷에 쓰기 위해 필요합니다. roles/storage.legacyBucketReader는 버킷의 Cloud Monitoring 통합을 모니터링하기 위해 필요합니다. 자세한 내용은 Cloud Storage의 IAM 역할을 참조하세요.
API를 통해 서비스에 액세스할 때 다음 명령어를 실행합니다.
- 서비스 에이전트 역할을 사용하여 서비스 계정을 만듭니다. - gcloud- gcloud beta services identity create --service=privateca.googleapis.com --project=PROJECT_ID- 각 항목의 의미는 다음과 같습니다. - PROJECT_ID는 CA 풀이 생성된 프로젝트의 고유 식별자입니다.
 
- 다음 - gcloud명령어를 사용하여 서비스 계정에- roles/cloudkms.signerVerifier및- roles/viewer역할을 부여합니다.- 기존 Cloud KMS 서명 키가 제공된 경우: - gcloud- gcloud kms keys add-iam-policy-binding 'CRYPTOKEY_NAME' \ --keyring='KEYRING_NAME' \ --location='LOCATION' \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \ --role='roles/cloudkms.signerVerifier'- 각 항목의 의미는 다음과 같습니다. - 'CRYPTOKEY_NAME'은 키 이름입니다.
- 'KEYRING_NAME'은 키링의 이름입니다.
- 'LOCATION'는 키링을 만든 Cloud KMS 위치입니다.
- 'PROJECT_NUMBER'는 서비스 계정의 이름입니다.
 - gcloud kms keys add-iam-policy-binding 'CRYPTOKEY_NAME' \ --keyring='KEYRING_NAME' \ --location='LOCATION' \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \ --role='roles/viewer'
- 다음 - gcloud명령어를 사용하여 서비스 계정에- roles/storage.objectAdmin및- roles/storage.legacyBucketReader역할을 부여합니다.- 기존 Cloud Storage 버킷이 제공된 경우: - gcloud- gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com \ --role=roles/storage.objectAdmin- 각 항목의 의미는 다음과 같습니다. - BUCKET_NAME은 Cloud Storage 버킷의 이름입니다.
- PROJECT_NUMBER는 서비스 계정의 고유 식별자입니다.
 - gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com \ --role=roles/storage.legacyBucketReader
API 권한
다음 표에는 호출자가 CA Service API의 각 메서드를 호출하는 데 필요한 권한이 나와 있습니다.
| 권한 | 설명 | 
|---|---|
| privateca.caPools.create | 인증 기관(CA) 풀을 만듭니다. | 
| privateca.caPools.update | CA 풀을 업데이트합니다. | 
| privateca.caPools.list | 프로젝트의 CA 풀을 나열합니다. | 
| privateca.caPools.get | CA 풀을 검색합니다. | 
| privateca.caPools.delete | CA 풀을 삭제합니다. | 
| privateca.caPools.use | CA 풀을 사용합니다. | 
| privateca.caPools.getIamPolicy | CA 풀의 IAM 정책을 검색합니다. | 
| privateca.caPools.setIamPolicy | CA 풀의 IAM 정책을 설정합니다. | 
| privateca.certificateAuthorities.create | CA를 만듭니다. | 
| privateca.certificateAuthorities.delete | CA 삭제를 예약합니다. | 
| privateca.certificateAuthorities.get | CA 또는 CA 인증서 서명 요청을 가져옵니다. | 
| privateca.certificateAuthorities.list | 프로젝트의 CA를 나열합니다. | 
| privateca.certificateAuthorities.update | CA 활성화, 사용 설정, 사용 중지, 복원을 포함하여 CA를 업데이트합니다. | 
| privateca.certificates.create | CA Service의 인증서를 요청합니다. | 
| privateca.certificates.createForSelf | 발신자 ID를 사용하여 CA Service에서 인증서를 요청합니다. | 
| privateca.certificates.get | 인증서 및 해당 메타데이터를 가져옵니다. | 
| privateca.certificates.list | CA의 모든 인증서를 나열합니다. | 
| privateca.certificates.update | 취소를 포함한 인증서의 메타데이터를 업데이트합니다. | 
| privateca.certificateRevocationLists.get | CA에서 인증서 해지 목록(CRL)을 가져옵니다. | 
| privateca.certificateRevocationLists.getIamPolicy | CRL의 IAM 정책을 가져옵니다. | 
| privateca.certificateRevocationLists.list | CA의 모든 CRL을 나열합니다. | 
| privateca.certificateRevocationLists.setIamPolicy | CRL의 IAM 정책을 가져옵니다. | 
| privateca.certificateRevocationLists.update | CRL을 업데이트합니다. | 
| privateca.certificateTemplates.create | 인증서 템플릿을 만듭니다. | 
| privateca.certificateTemplates.get | 인증서 템플릿을 검색합니다. | 
| privateca.certificateTemplates.list | 모든 인증서 템플릿을 나열합니다. | 
| privateca.certificateTemplates.update | 인증서 템플릿을 업데이트합니다. | 
| privateca.certificateTemplates.delete | 인증서 템플릿을 삭제합니다. | 
| privateca.certificateTemplates.getIamPolicy | 인증서 템플릿의 IAM 정책을 가져옵니다. | 
| privateca.certificateTemplates.setIamPolicy | 인증서 템플릿의 IAM 정책을 설정합니다. | 
| privateca.certificateTemplates.use | 인증서 템플릿을 사용합니다. | 
| privateca.operations.cancel | 장기 실행 작업을 취소합니다. | 
| privateca.operations.delete | 장기 실행 작업을 삭제합니다. | 
| privateca.operations.get | 장기 실행 작업을 가져옵니다. | 
| privateca.operations.list | 프로젝트의 장기 실행 작업을 나열합니다. |