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.get privateca.caPools.getIamPolicy privateca.caPools.list privateca.certificateAuthorities.list privateca.certificateAuthorities.get privateca.certificateTemplates.get privateca.certificateTemplates.getIamPolicy privateca.certificateTemplates.list privateca.certificates.list privateca.certificates.get privateca.locations.get privateca.locations.list privateca.operations.get privateca.operations.list privateca.certificateRevocationLists.list privateca.certificateRevocationLists.get privateca.certificateRevocationLists.getIamPolicy resourcemanager.projects.get resourcemanager.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.get privateca.certificateTemplates.list privateca.certificateTemplates.use
|
CA Service 인증서 템플릿 사용자는 인증서 템플릿을 읽고 나열하고 사용할 수 있습니다. |
CA Service 작업 관리자roles/privateca.caManager |
roles/privateca.auditor 의 모든 권한 및 다음 권한:privateca.certificates.update privateca.caPools.create privateca.caPools.delete privateca.caPools.update privateca.certificateAuthorities.create privateca.certificateAuthorities.delete privateca.certificateAuthorities.update privateca.certificateRevocationLists.update privateca.certificateTemplates.create privateca.certificateTemplates.delete privateca.certificateTemplates.update privateca.certificates.update privateca.operations.cancel privateca.operations.delete resourcemanager.projects.get resourcemanager.projects.list storage.buckets.create
|
CA Service 작업 관리자는 CA 풀과 CA를 만들고 업데이트하고 삭제할 수 있습니다. 이 역할은 또한 인증서를 취소하고 Cloud Storage 버킷을 만듭니다. 또한 CA Service 감사자와 동일한 기능이 포함됩니다. 이 역할에서 개별 사용자는 CA 풀 발급 정책의 구성과 함께 조직에서 CA 풀을 구성하고 배포할 책임이 있습니다. 이 역할은 인증서 만들기를 허용하지 않습니다. 이렇게 하려면 CA Service 인증서 요청자, CA Service 인증서 관리자 또는 CA Service 관리자 역할을 사용합니다. |
CA Service 관리자roles/privateca.admin |
roles/privateca.certificateManager , roles/privateca.caManager 의 모든 권한 및 다음 권한:privateca.*.setIamPolicy privateca.caPools.use privateca.operations.cancel privateca.operations.delete privateca.resourcemanager.projects.get privateca.resourcemanager.projects.list storage.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 |
프로젝트의 장기 실행 작업을 나열합니다. |