์ด ํ์ด์ง์์๋Google Cloud ์ฝ์, Google Cloud CLI, Identity and Access Management API ๋๋ Google Cloud ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ณ์ ํค๋ฅผ ๋ง๋ค๊ณ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
์์ํ๊ธฐ ์ ์
Enable the IAM API.
์ธ์ฆ์ ์ค์ ํฉ๋๋ค.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
C#
๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ด ํ์ด์ง์ .NET ์ํ์ ์ฌ์ฉํ๋ ค๋ฉด gcloud CLI๋ฅผ ์ค์นํ๊ณ ์ด๊ธฐํํ ํ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค.
Google Cloud CLI๋ฅผ ์ค์นํฉ๋๋ค.
์ธ๋ถ ID ๊ณต๊ธ์ ์ฒด(IdP)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋จผ์ ์ ํด ID๋ก gcloud CLI์ ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
์์ธํ ๋ด์ฉ์ Google Cloud ์ธ์ฆ ๋ฌธ์์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ADC ์ค์ ์ ์ฐธ์กฐํ์ธ์.
C++
๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ด ํ์ด์ง์ C++ ์ํ์ ์ฌ์ฉํ๋ ค๋ฉด gcloud CLI๋ฅผ ์ค์นํ๊ณ ์ด๊ธฐํํ ํ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค.
Google Cloud CLI๋ฅผ ์ค์นํฉ๋๋ค.
์ธ๋ถ ID ๊ณต๊ธ์ ์ฒด(IdP)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋จผ์ ์ ํด ID๋ก gcloud CLI์ ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
์์ธํ ๋ด์ฉ์ Google Cloud ์ธ์ฆ ๋ฌธ์์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ADC ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Go
๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ด ํ์ด์ง์ Go ์ํ์ ์ฌ์ฉํ๋ ค๋ฉด gcloud CLI๋ฅผ ์ค์นํ๊ณ ์ด๊ธฐํํ ํ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค.
Google Cloud CLI๋ฅผ ์ค์นํฉ๋๋ค.
์ธ๋ถ ID ๊ณต๊ธ์ ์ฒด(IdP)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋จผ์ ์ ํด ID๋ก gcloud CLI์ ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
์์ธํ ๋ด์ฉ์ Google Cloud ์ธ์ฆ ๋ฌธ์์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ADC ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Java
๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ด ํ์ด์ง์ Java ์ํ์ ์ฌ์ฉํ๋ ค๋ฉด gcloud CLI๋ฅผ ์ค์นํ๊ณ ์ด๊ธฐํํ ํ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค.
Google Cloud CLI๋ฅผ ์ค์นํฉ๋๋ค.
์ธ๋ถ ID ๊ณต๊ธ์ ์ฒด(IdP)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋จผ์ ์ ํด ID๋ก gcloud CLI์ ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
์์ธํ ๋ด์ฉ์ Google Cloud ์ธ์ฆ ๋ฌธ์์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ADC ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Python
๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ด ํ์ด์ง์ Python ์ํ์ ์ฌ์ฉํ๋ ค๋ฉด gcloud CLI๋ฅผ ์ค์นํ๊ณ ์ด๊ธฐํํ ํ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค.
Google Cloud CLI๋ฅผ ์ค์นํฉ๋๋ค.
์ธ๋ถ ID ๊ณต๊ธ์ ์ฒด(IdP)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋จผ์ ์ ํด ID๋ก gcloud CLI์ ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
์์ธํ ๋ด์ฉ์ Google Cloud ์ธ์ฆ ๋ฌธ์์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ADC ์ค์ ์ ์ฐธ์กฐํ์ธ์.
REST
๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ด ํ์ด์ง์ REST API ์ํ์ ์ฌ์ฉํ๋ ค๋ฉด gcloud CLI์ ์ ๊ณตํ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Google Cloud CLI๋ฅผ ์ค์นํฉ๋๋ค.
์ธ๋ถ ID ๊ณต๊ธ์ ์ฒด(IdP)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋จผ์ ์ ํด ID๋ก gcloud CLI์ ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ Google Cloud ์ธ์ฆ ๋ฌธ์์ REST ์ฌ์ฉ์ ์ํ ์ธ์ฆ์ ์ฐธ์กฐํ์ธ์.
์๋น์ค ๊ณ์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด์ ๋ํด ์ดํดํด์ผ ํฉ๋๋ค.
ํ์ํ ์ญํ
์๋น์ค ๊ณ์ ํค๋ฅผ ๋ง๋ค๊ณ ์ญ์ ํ๋ ๋ฐ ํ์ํ ๊ถํ์ ์ป์ผ๋ ค๋ฉด ๊ด๋ฆฌ์์๊ฒ ํ๋ก์ ํธ ๋๋ ํค๋ฅผ ๊ด๋ฆฌํ ์๋น์ค ๊ณ์ ์ ๋ํ ์๋น์ค ๊ณ์ ํค ๊ด๋ฆฌ์(roles/iam.serviceAccountKeyAdmin
) IAM ์ญํ ์ ๋ถ์ฌํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์.
์ญํ ๋ถ์ฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ปค์คํ ์ญํ ์ด๋ ๋ค๋ฅธ ์ฌ์ ์ ์๋ ์ญํ ์ ํตํด ํ์ํ ๊ถํ์ ์ป์ ์๋ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์๋น์ค ๊ณ์ ์ญํ ์ ์ฐธ์กฐํ์ธ์.
์กฐ์ง ์ ์ฑ ๊ตฌ์ฑ์ ๋ฐ๋ผ ํค๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ํ๋ก์ ํธ์์ ์๋น์ค ๊ณ์ ํค ์์ฑ์ ํ์ฉํด์ผ ํ ์๋ ์์ต๋๋ค.
ํ๋ก์ ํธ์์ ์๋น์ค ๊ณ์ ํค ์์ฑ์ ํ์ฉํ๋ ๋ฐ ํ์ํ ๊ถํ์ ์ป์ผ๋ ค๋ฉด ๊ด๋ฆฌ์์๊ฒ ์กฐ์ง์ ๋ํ ๋ค์ IAM ์ญํ ์ ๋ถ์ฌํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์.
-
์กฐ์ง ์ ์ฑ
๊ด๋ฆฌ์(
roles/orgpolicy.policyAdmin
) -
์กฐ์ง ๋ทฐ์ด(
roles/resourcemanager.organizationViewer
) -
ํ๊ทธ ๊ด๋ฆฌ์(
roles/resourcemanager.tagAdmin
)
์ญํ ๋ถ์ฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด๋ฌํ ์ฌ์ ์ ์๋ ์ญํ ์๋ ํ๋ก์ ํธ์์ ์๋น์ค ๊ณ์ ํค ์์ฑ์ ํ์ฉํ๋ ๋ฐ ํ์ํ ๊ถํ์ด ํฌํจ๋์ด ์์ต๋๋ค. ํ์ํ ์ ํํ ๊ถํ์ ๋ณด๋ ค๋ฉด ํ์ ๊ถํ ์น์ ์ ํผ์น์ธ์.
ํ์ ๊ถํ
ํ๋ก์ ํธ์์ ์๋น์ค ๊ณ์ ํค ์์ฑ์ ํ์ฉํ๋ ค๋ฉด ๋ค์ ๊ถํ์ด ํ์ํฉ๋๋ค.
-
orgpolicy.constraints.list
-
orgpolicy.customConstraints.create
-
orgpolicy.customConstraints.delete
-
orgpolicy.customConstraints.get
-
orgpolicy.customConstraints.list
-
orgpolicy.customConstraints.update
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
-
resourcemanager.organizations.get
-
resourcemanager.projects.listTagBindings
-
resourcemanager.projects.listEffectiveTags
-
resourcemanager.tagKeys.get
-
resourcemanager.tagKeys.list
-
resourcemanager.tagValues.list
-
resourcemanager.tagValues.get
์ปค์คํ ์ญํ ์ด๋ ๋ค๋ฅธ ์ฌ์ ์ ์๋ ์ญํ ์ ์ฌ์ฉํ์ฌ ์ด ๊ถํ์ ๋ถ์ฌ๋ฐ์ ์๋ ์์ต๋๋ค.
์๋น์ค ๊ณ์ ํค ์์ฑ ํ์ฉ
์๋น์ค ๊ณ์ ํค๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ํ๋ก์ ํธ์ iam.disableServiceAccountKeyCreation
์กฐ์ง ์ ์ฑ
์ ์ฝ ์กฐ๊ฑด์ด ์ ์ฉ๋์ง ์์๋์ง ํ์ธํฉ๋๋ค. ํ๋ก์ ํธ์ ์ด ์ ์ฝ ์กฐ๊ฑด์ด ์ ์ฉ๋๋ฉด ํด๋น ํ๋ก์ ํธ์์ ์๋น์ค ๊ณ์ ํค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์๋น์ค ๊ณ์ ํค๊ฐ ์ค์ ๋ก ํ์ํ ํ๋ก์ ํธ๋ง ์ ์ธํ๊ณ ๋๋ถ๋ถ์ ํ๋ก์ ํธ์ ์ด ์ ์ฝ ์กฐ๊ฑด์ ์ ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋์ฒด ์ธ์ฆ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ์ฉ ์ฌ๋ก์ ์ ํฉํ ์ธ์ฆ ๋ฐฉ๋ฒ ์ ํ์ ์ฐธ์กฐํ์ธ์.
ํ๋ก์ ํธ๋ฅผ iam.disableServiceAccountKeyCreation
์กฐ์ง ์ ์ฑ
์ ์ฝ ์กฐ๊ฑด์์ ์ ์ธํ๋ ค๋ฉด ์กฐ์ง ์ ์ฑ
๊ด๋ฆฌ์์๊ฒ ๋ค์์ ์ํํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์.
-
์กฐ์ง ์์ค์์ ๋ฆฌ์์ค๋ฅผ ์กฐ์ง ์ ์ฑ ์์ ์ ์ธํ ์ง ์ฌ๋ถ๋ฅผ ์ ์ํ๋ ๋ฐ ์ฌ์ฉํ ํ๊ทธ ํค์ ํ๊ทธ ๊ฐ์ ๋ง๋ญ๋๋ค.
disableServiceAccountKeyCreation
ํค์enforced
๋ฐnot_enforced
๊ฐ์ผ๋ก ํ๊ทธ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค.ํ๊ทธ ํค์ ํ๊ทธ ๊ฐ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ ํ๊ทธ ๋ง๋ค๊ธฐ ๋ฐ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
-
disableServiceAccountKeyCreation
ํ๊ทธ๋ฅผ ์กฐ์ง์ ์ฐ๊ฒฐํ๊ณ ๊ฐ์enforced
๋ก ์ค์ ํฉ๋๋ค. ๋ค๋ฅธ ํ๊ทธ ๊ฐ์ผ๋ก ๋ฎ์ด์ฐ์ง ์๋ ํ ์กฐ์ง์ ๋ชจ๋ ๋ฆฌ์์ค์์ ์ด ํ๊ทธ ๊ฐ์ ์์ํฉ๋๋ค.ํ๊ทธ๋ฅผ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ฆฌ์์ค์ ํ๊ทธ ์ฐ๊ฒฐ์ ์ฐธ์กฐํ์ธ์.
-
์กฐ์ง ์ ์ฑ
์์ ์ ์ธํ๋ ค๋ ํ๋ก์ ํธ๋ ํด๋๋ง๋ค
disableServiceAccountKeyCreation
ํ๊ทธ๋ฅผ ์ฐ๊ฒฐํ๊ณ ๊ฐ์not_enforced
๋ก ์ค์ ํฉ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ํ๋ก์ ํธ๋ ํด๋์ ํ๊ทธ ๊ฐ์ ์ค์ ํ๋ฉด ์กฐ์ง์์ ์์๋ ํ๊ทธ ๊ฐ์ด ์ฌ์ ์๋ฉ๋๋ค. -
์์ธ ๋ฆฌ์์ค์ ๋ํ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ฉํ์ง ์๋๋ก ์๋น์ค ๊ณ์ ํค ์์ฑ์ ๋ฐฉ์งํ๋ ์กฐ์ง ์ ์ฑ ์ ๋ง๋ค๊ฑฐ๋ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด ์ ์ฑ ์๋ ๋ค์ ๊ท์น์ด ์์ด์ผ ํฉ๋๋ค.
-
disableServiceAccountKeyCreation: not_enforced
ํ๊ทธ๊ฐ ์๋ ๋ฆฌ์์ค์ ์ ์ฉ๋์ง ์๋๋กiam.disableServiceAccountKeyCreation
์ ์ฝ ์กฐ๊ฑด์ ๊ตฌ์ฑํฉ๋๋ค. ์ด ๊ท์น์ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค."resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyCreation', 'not_enforced')"
-
๋ค๋ฅธ ๋ชจ๋ ๋ฆฌ์์ค์ ์ ์ฉ๋๋๋ก
iam.disableServiceAccountKeyCreation
์ ์ฝ ์กฐ๊ฑด์ ๊ตฌ์ฑํฉ๋๋ค.
-
์๋น์ค ๊ณ์ ํค ๋ง๋ค๊ธฐ
๋ค๋ฅธ ํ๋ซํผ์ด๋ ์จํ๋ ๋ฏธ์ค์ ๊ฐ์ด Google Cloud์ธ๋ถ์์ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ ์๋น์ค ๊ณ์ ์ ID๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ๊ณต๊ฐ ํค/๋น๊ณต๊ฐ ํค ์์ ํตํด ์์ ํ๊ฒ ์ ๊ณตํ ์ ์์ต๋๋ค. ์๋น์ค ๊ณ์ ํค๋ฅผ ๋ง๋ค๋ฉด ๊ณต๊ฐ ๋ถ๋ถ์Google Cloud์ ์ ์ฅ๋์ง๋ง ๋น๊ณต๊ฐ ๋ถ๋ถ์ ์์ ๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ณต๊ฐ ํค/๋น๊ณต๊ฐ ํค ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ์๋น์ค ๊ณ์ ํค๋ฅผ ์ฐธ์กฐํ์ธ์.
Google Cloud ์ฝ์, gcloud CLI, serviceAccounts.keys.create()
๋ฉ์๋ ๋๋ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ณ์ ํค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์๋น์ค ๊ณ์ ์ ์ต๋ 10๊ฐ์ ํค๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์๋น์ค ๊ณ์ ํค๋ ๋ง๋ฃ๋์ง ์์ต๋๋ค. ์กฐ์ง ์ ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ณ์ ํค๊ฐ ์ ํจํ ๊ธฐ๊ฐ์ ์ง์ ํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฌ์ฉ์ ๊ด๋ฆฌ ํค ๋ง๋ฃ ์๊ฐ์ ์ฐธ์กฐํ์ธ์.
์๋ ์์์์ SA_NAME
์ ์๋น์ค ๊ณ์ ์ ์ด๋ฆ์ด๊ณ , PROJECT_ID
๋Google Cloud ํ๋ก์ ํธ์ ID์
๋๋ค. Google Cloud ์ฝ์์ ์๋น์ค ๊ณ์ ํ์ด์ง์์ SA_NAME@PROJECT_ID.iam.gserviceaccount.com
๋ฌธ์์ด์ ๊ฒ์ํ ์ ์์ต๋๋ค.
์ฝ์
- Google Cloud ์ฝ์์์ ์๋น์ค ๊ณ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋๋จธ์ง ๋จ๊ณ๋ Google Cloud ์ฝ์์ ํ์๋ฉ๋๋ค.
- ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค.
- ํค๋ฅผ ๋ง๋ค๋ ค๋ ์๋น์ค ๊ณ์ ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํค ํญ์ ํด๋ฆญํฉ๋๋ค.- ํค ์ถ๊ฐ ๋๋กญ๋ค์ด ๋ฉ๋ด๋ฅผ ํด๋ฆญํ ํ ์ ํค ๋ง๋ค๊ธฐ๋ฅผ ์ ํํฉ๋๋ค.
- ํค ์ ํ์ผ๋ก JSON์ ์ ํํ๊ณ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ๋ฉด ์๋น์ค ๊ณ์ ํค ํ์ผ์ด ๋ค์ด๋ก๋๋ฉ๋๋ค. ํค ํ์ผ์ ๋ค์ด๋ก๋ํ ํ์๋ ๋ค์ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
๋ค์ด๋ก๋ํ ํค์ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์ PRIVATE_KEY
๋ ๊ณต๊ฐ ํค/๋น๊ณต๊ฐ ํค ์์ ๋น๊ณต๊ฐ ๋ถ๋ถ์
๋๋ค.
{
"type": "service_account",
"project_id": "PROJECT_ID",
"private_key_id": "KEY_ID",
"private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
"client_email": "SERVICE_ACCOUNT_EMAIL",
"client_id": "CLIENT_ID",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL"
}
ํค ํ์ผ์ ์๋น์ค ๊ณ์ ์ผ๋ก ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ผ๋ฏ๋ก ์์ ํ๊ฒ ์ ์ฅํด์ผ ํฉ๋๋ค. ์ํ๋ ๊ฒฝ์ฐ ์ด ํ์ผ์ ์ด๋ํ๊ณ ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
์๋น์ค ๊ณ์ ํค ํ์ผ์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋น์ค ๊ณ์ ์ผ๋ก ์ธ์ฆํ ์ ์์ต๋๋ค.
gcloud
gcloud iam service-accounts keys create
๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ์๋น์ค ๊ณ์ ํค๋ฅผ ๋ง๋ญ๋๋ค.
๋ค์ ๊ฐ์ ๋ฐ๊ฟ๋๋ค.
KEY_FILE
: ๋น๊ณต๊ฐ ํค์ ์ ์ถ๋ ฅ ํ์ผ ๊ฒฝ๋ก์ ๋๋ค(์:~/sa-private-key.json
).SA_NAME
: ํค๋ฅผ ๋ง๋ค ์๋น์ค ๊ณ์ ์ ์ด๋ฆ์ ๋๋ค.PROJECT_ID
: Google Cloud ํ๋ก์ ํธ ID์ ๋๋ค.
gcloud iam service-accounts keys create KEY_FILE \ --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
์ถ๋ ฅ:
created key [e44da1202f82f8f4bdd9d92bc412d1d8a837fa83] of type [json] as [/usr/home/username/KEY_FILE] for [SA_NAME@PROJECT_ID.iam.gserviceaccount.com]
์ด์ ์๋น์ค ๊ณ์ ํค ํ์ผ์ด ๋จธ์ ์ ๋ค์ด๋ก๋๋ฉ๋๋ค. ํค ํ์ผ์ ๋ค์ด๋ก๋ํ ํ์๋ ๋ค์ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
๋ค์ด๋ก๋ํ ํค์ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์ PRIVATE_KEY
๋ ๊ณต๊ฐ ํค/๋น๊ณต๊ฐ ํค ์์ ๋น๊ณต๊ฐ ๋ถ๋ถ์
๋๋ค.
{ "type": "service_account", "project_id": "PROJECT_ID", "private_key_id": "KEY_ID", "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n", "client_email": "SERVICE_ACCOUNT_EMAIL", "client_id": "CLIENT_ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL" }
ํค ํ์ผ์ ์๋น์ค ๊ณ์ ์ผ๋ก ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ผ๋ฏ๋ก ์์ ํ๊ฒ ์ ์ฅํด์ผ ํฉ๋๋ค. ์ํ๋ ๊ฒฝ์ฐ ์ด ํ์ผ์ ์ด๋ํ๊ณ ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
์๋น์ค ๊ณ์ ํค ํ์ผ์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋น์ค ๊ณ์ ์ผ๋ก ์ธ์ฆํ ์ ์์ต๋๋ค.
C++
IAM์ฉ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ IAM ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ IAM C++ API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
IAM์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ํ๊ธฐ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
C#
IAM์ฉ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ IAM ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ IAM C# API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
IAM์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ํ๊ธฐ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Go
IAM์ฉ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ IAM ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ IAM Go API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
IAM์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ํ๊ธฐ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Java
IAM์ฉ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ IAM ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ IAM Java API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
IAM์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ํ๊ธฐ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Python
IAM์ฉ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ IAM ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ IAM Python API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
IAM์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ํ๊ธฐ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
REST
projects.serviceAccounts.keys.create
๋ฉ์๋๋ ์๋น์ค ๊ณ์ ์ ํค๋ฅผ ๋ง๋ญ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: Google Cloud ํ๋ก์ ํธ ID. ํ๋ก์ ํธ ID๋my-project
์ ๊ฐ์ ์์ซ์ ๋ฌธ์์ด์ ๋๋ค.SA_NAME
: ํค๋ฅผ ๋ง๋ค๋ ค๋ ์๋น์ค ๊ณ์ ์ ์ด๋ฆKEY_ALGORITHM
: ์ ํ์ฌํญ. ํค์ ์ฌ์ฉํ ํค ์๊ณ ๋ฆฌ์ฆ. ๋ณ๊ฒฝ๋ ์ ์๋ ๊ธฐ๋ณธ๊ฐ์ 2,048๋นํธ RSA ํค์ ๋๋ค. ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ ๋ชฉ๋ก์ServiceAccountKeyAlgorithm
์ฐธ์กฐ๋ฅผ ํ์ธํ์ธ์.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "keyAlgorithm": "KEY_ALGORITHM" }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
์๋ต์๋ ์๋น์ค ๊ณ์ ์ ํค๊ฐ ํฌํจ๋ฉ๋๋ค. ๋ฐํ๋ ํค ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์ ENCODED_PRIVATE_KEY
๋ ๊ณต๊ฐ ํค/๋น๊ณต๊ฐ ํค ์์์ ๋น๊ณต๊ฐ ๋ถ๋ถ์ผ๋ก, base64๋ก ์ธ์ฝ๋ฉ๋ฉ๋๋ค.
{ "name": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID", "privateKeyType": "TYPE_GOOGLE_CREDENTIALS_FILE", "privateKeyData": "ENCODED_PRIVATE_KEY", "validAfterTime": "DATE", "validBeforeTime": "DATE", "keyAlgorithm": "KEY_ALG_RSA_2048" }
์๋น์ค ๊ณ์ ์ผ๋ก ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ํค ํ์ผ์ ๋ง๋ค๋ ค๋ฉด ๋น๊ณต๊ฐ ํค ๋ฐ์ดํฐ๋ฅผ ๋์ฝ๋ฉํ์ฌ ํ์ผ์ ์ ์ฅํฉ๋๋ค.
Linux
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH
PATH
๋ฅผ ํค๋ฅผ ์ ์ฅํ ํ์ผ์ ๊ฒฝ๋ก๋ก ๋ฐ๊ฟ๋๋ค. ํ์ผ ํ์ฅ์๋ .json
์ ์ฌ์ฉํฉ๋๋ค.
macOS
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH
PATH
๋ฅผ ํค๋ฅผ ์ ์ฅํ ํ์ผ์ ๊ฒฝ๋ก๋ก ๋ฐ๊ฟ๋๋ค. ํ์ผ ํ์ฅ์๋ .json
์ ์ฌ์ฉํฉ๋๋ค.
PowerShell
์ธ์ฝ๋ฉ๋ ๋น๊ณต๊ฐ ํค ๋ฐ์ดํฐ(
ENCODED_PRIVATE_KEY
)๋ฅผ ํ์ผ์ ์ ์ฅํฉ๋๋ค.certutil
์ ์ฌ์ฉํ์ฌ ํ์ผ์ ๋์ฝ๋ฉํฉ๋๋ค.certutil -decode ENCODED_FILE DECODED_FILE
๋ค์ ๊ฐ์ ๋ฐ๊ฟ๋๋ค.
ENCODED_FILE
: ์ธ์ฝ๋ฉ๋ ๋น๊ณต๊ฐ ํค ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ํ์ผ์ ๊ฒฝ๋ก์ ๋๋ค.DECODED_FILE
: ํค๋ฅผ ์ ์ฅํ ํ์ผ์ ๊ฒฝ๋ก์ ๋๋ค. ํ์ผ ํ์ฅ์๋.json
์ ์ฌ์ฉํฉ๋๋ค.
ํค ๋ฐ์ดํฐ๋ ์๋น์ค ๊ณ์ ์ผ๋ก ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ผ๋ฏ๋ก ์์ ํ๊ฒ ์ ์ฅํด์ผ ํฉ๋๋ค.
์๋น์ค ๊ณ์ ํค ํ์ผ์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋น์ค ๊ณ์ ์ผ๋ก ์ธ์ฆํ ์ ์์ต๋๋ค.
์๋น์ค ๊ณ์ ํค ์ญ์
์๋น์ค ๊ณ์ ํค๋ฅผ ์ญ์ ํ๋ฉด ์ด ํค๋ฅผ ์ฌ์ฉํ์ฌ Google API์ ์ธ์ฆ์ ์ํํ ์ ์์ต๋๋ค.
์ญ์ ๋ ํค๋ ์ญ์ ์ทจ์ํ ์ ์์ต๋๋ค. ํค๋ฅผ ์ฌ์ฉ ์ค์งํ ํ ํค๊ฐ ๋ ์ด์ ํ์ํ์ง ์์์ง ํ์ธ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ํ์ ํค๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฐ ํ ํค๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
๊ถ์ฅ์ฌํญ์ ๋ฐ๋ผ ์๋น์ค ๊ณ์ ํค๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋น์ค ๊ณ์ ํค ์ํ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ์๋น์ค ๊ณ์ ํค ์ํ์ ์ฐธ์กฐํ์ธ์.
์ฝ์
- Google Cloud ์ฝ์์์ ์๋น์ค ๊ณ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋๋จธ์ง ๋จ๊ณ๋ Google Cloud ์ฝ์์ ํ์๋ฉ๋๋ค.
- ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค.
- ์๋น์ค ๊ณ์ ํ์ด์ง์์ ํค๋ฅผ ์ญ์ ํ ์๋น์ค ๊ณ์ ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํค ํญ์ ํด๋ฆญํฉ๋๋ค.
- ํค ๋ชฉ๋ก์์ ์ญ์ ํ ํค๋ง๋ค ์ญ์ ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
gcloud iam service-accounts keys delete
๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ์๋น์ค ๊ณ์ ํค๋ฅผ ์ญ์ ํฉ๋๋ค.
๋ค์ ๊ฐ์ ๋ฐ๊ฟ๋๋ค.
KEY_ID
: ์ญ์ ํ ํค์ ID์ ๋๋ค. ํค์ ID๋ฅผ ์ฐพ์ผ๋ ค๋ฉด ์๋น์ค ๊ณ์ ์ ๋ชจ๋ ํค๋ฅผ ๋์ดํ๊ณ ์ญ์ ํ ํค๋ฅผ ํ์ธํ ๋ค์ ํค์ ID๋ฅผ ๋ณต์ฌํ์ธ์.SA_NAME
: ํค๊ฐ ์ํ ์๋น์ค ๊ณ์ ์ ์ด๋ฆ์ ๋๋ค.PROJECT_ID
: Google Cloud ํ๋ก์ ํธ ID์ ๋๋ค.
gcloud iam service-accounts keys delete KEY_ID \ --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
์ถ๋ ฅ:
Deleted key [KEY_ID] for service account [SA_NAME@PROJECT_ID.iam.gserviceaccount.com]
C++
IAM์ฉ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ IAM ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ IAM C++ API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
IAM์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ํ๊ธฐ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
C#
IAM์ฉ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ IAM ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ IAM C# API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
IAM์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ํ๊ธฐ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Go
IAM์ฉ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ IAM ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ IAM Go API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
IAM์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ํ๊ธฐ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Java
IAM์ฉ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ IAM ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ IAM Java API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
IAM์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ํ๊ธฐ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Python
IAM์ฉ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ IAM ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ IAM Python API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
IAM์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ํ๊ธฐ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
REST
projects.serviceAccounts.keys.delete
๋ฉ์๋๋ ์๋น์ค ๊ณ์ ํค๋ฅผ ์ญ์ ํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: Google Cloud ํ๋ก์ ํธ ID. ํ๋ก์ ํธ ID๋my-project
์ ๊ฐ์ ์์ซ์ ๋ฌธ์์ด์ ๋๋ค.SA_NAME
: ํค๋ฅผ ์ญ์ ํ๋ ค๋ ์๋น์ค ๊ณ์ ์ ์ด๋ฆ์ ๋๋ค.KEY_ID
: ์ญ์ ํ๋ ค๋ ํค์ ID์ ๋๋ค. ํค์ ID๋ฅผ ์ฐพ์ผ๋ ค๋ฉด ์๋น์ค ๊ณ์ ์ ๋ชจ๋ ํค๋ฅผ ๋์ดํ๊ณ ์ญ์ ํ ํค๋ฅผ ์ฐพ์ ๋ค์name
ํ๋์ ๋์์ ํค์ ID๋ฅผ ๋ณต์ฌํฉ๋๋ค. ํค์ ID๋keys/
์ดํ์ ๋ชจ๋ ๋ฌธ์์ ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
DELETE https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/KEY_ID
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ }
๋ค์ ๋จ๊ณ
- ์๋น์ค ๊ณ์ ํค๋ฅผ ๋์ดํ๊ณ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
- ์์ฒด ๊ณต๊ฐ ์๋น์ค ๊ณ์ ํค๋ฅผ ์ ๋ก๋ํ๋ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
- ์๋น์ค ๊ณ์ ํค ๊ด๋ฆฌ ๊ถ์ฅ์ฌํญ ์ดํดํ๊ธฐ
- ์ธ์ฆ์ ์ํ ์๋น์ค ๊ณ์ ํค ๋์ ์์๋ณด๊ธฐ
์ง์ ์ฌ์ฉํด ๋ณด๊ธฐ
Google Cloud๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ณ์ ์ ๋ง๋ค๊ณ Google ์ ํ์ ์ค์ ์ฑ๋ฅ์ ํ๊ฐํด ๋ณด์ธ์. ์ ๊ท ๊ณ ๊ฐ์๊ฒ๋ ์ํฌ๋ก๋๋ฅผ ์คํ, ํ ์คํธ, ๋ฐฐํฌํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ $300์ ๋ฌด๋ฃ ํฌ๋ ๋ง์ด ์ ๊ณต๋ฉ๋๋ค.
๋ฌด๋ฃ๋ก ์์ํ๊ธฐ