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 |
ํ๋ก์ ํธ์ ์ฅ๊ธฐ ์คํ ์์ ์ ๋์ดํฉ๋๋ค. |
๋ค์ ๋จ๊ณ
- IAM์ด Google Cloud ๋ฆฌ์์ค์ ๊ถํ ๋ฐ ์ก์ธ์ค ๋ฒ์๋ฅผ ์ค์์์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
- IAM ์ ์ฑ ๊ตฌ์ฑ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ