์ผ๋ถ Google Cloud ๋ฆฌ์์ค์ ๊ฒฝ์ฐ ๋ฆฌ์์ค์์ ๊ธฐ๋ณธ ID๋ก ์ฌ์ฉํ๋ ์ฌ์ฉ์ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ ์ง์ ํ ์ ์์ต๋๋ค. ์ด ํ๋ก์ธ์ค๋ ์๋น์ค ๊ณ์ ์ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ๊ฑฐ๋ ์๋น์ค ๊ณ์ ๊ณผ ๋ฆฌ์์ค๋ฅผ ์ฐ๊ฒฐํ๋ค๊ณ ์๋ ค์ ธ ์์ต๋๋ค. ๋ฆฌ์์ค์์ ์คํ๋๋ ์ฝ๋๋ Google Cloud ์๋น์ค์ ๋ฆฌ์์ค์ ์ก์ธ์คํ ๋ ๋ฆฌ์์ค์ ์ฐ๊ฒฐ๋ ์๋น์ค ๊ณ์ ์ ID๋ก ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๋น์ค ๊ณ์ ์ Compute Engine ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๊ณ ์ธ์คํด์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ Google Cloud API๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ฆ๊ณผ ์น์ธ์ ์ฐ๊ฒฐ๋ ์๋น์ค ๊ณ์ ์ ์๋์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
์ด ํ์ด์ง์์๋ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ ์ ์๋๋ก ์๋น์ค ๊ณ์ ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
์์ํ๊ธฐ ์ ์
Enable the IAM and Resource Manager APIs.
IAM์์ ์๋น์ค ๊ณ์ ์๋ ๋ฐฉ๋ฒ์ ์ดํดํด์ผ ํฉ๋๋ค.
ํ์ํ ์ญํ
์๋น์ค ๊ณ์ ์ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ๋ ๋ฐ ํ์ํ ๊ถํ์ ์ป์ผ๋ ค๋ฉด ๊ด๋ฆฌ์์๊ฒ ์๋น์ค ๊ณ์ ์ ๋ํ ์๋น์ค ๊ณ์ ์ฌ์ฉ์(roles/iam.serviceAccountUser
) IAM ์ญํ ์ ๋ถ์ฌํด๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์.
์ญํ ๋ถ์ฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด ์ฌ์ ์ ์๋ ์ญํ ์๋ ์๋น์ค ๊ณ์ ์ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ๋ ๋ฐ ํ์ํ iam.serviceAccounts.actAs
๊ถํ์ด ํฌํจ๋์ด ์์ต๋๋ค.
์ปค์คํ ์ญํ ์ด๋ ๋ค๋ฅธ ์ฌ์ ์ ์๋ ์ญํ ์ ์ฌ์ฉํ์ฌ ์ด ๊ถํ์ ๋ถ์ฌ๋ฐ์ ์๋ ์์ต๋๋ค.
๋ฆฌ์์ค์ ์๋น์ค ๊ณ์ ์ฐ๊ฒฐ
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋ฆฌ์์ค๋ฅผ ๋ง๋ค ๋ ์๋น์ค ๊ณ์ ์ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ๋ฆฌ์์ค๋ฅผ ๋ง๋ ํ์๋ ๋ฆฌ์์ค์ ์ฐ๊ฒฐ๋ ์๋น์ค ๊ณ์ ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. Compute Engine ์ธ์คํด์ค์๋ ์ด ๊ท์น์ด ์ ์ฉ๋์ง ์์ต๋๋ค. ํ์์ ๋ฐ๋ผ ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋ ์๋น์ค ๊ณ์ ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๋ฆฌ์์ค์ ์๋น์ค ๊ณ์ ์ ์ฐ๊ฒฐํ๊ธฐ ์ ์ ์๋น์ค ๊ณ์ ์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ ์๋น์ค ๊ณ์ ๊ณผ ๋ฆฌ์์ค๊ฐ ๊ฐ์ ํ๋ก์ ํธ์ ์๋์ง ์๋๋ฉด ๋ค๋ฅธ ํ๋ก์ ํธ์ ์๋์ง์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์๋น์ค ๊ณ์ ์ ๊ตฌ์ฑํ ํ์๋ ๋ฆฌ์์ค๋ฅผ ๋ง๋ค๊ณ ํด๋น ๋ฆฌ์์ค์ ์๋น์ค ๊ณ์ ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๋์ผํ ํ๋ก์ ํธ์ ๋ฆฌ์์ค ๊ตฌ์ฑ
๋์ผํ ํ๋ก์ ํธ์ ๋ค๋ฅธ ๋ฆฌ์์ค์ ์๋น์ค ๊ณ์ ์ ์ฐ๊ฒฐํ๊ธฐ ์ ์ ๋ค๋ฅธ ์ฃผ ๊ตฌ์ฑ์์๊ฒ ์ญํ ์ ๋ถ์ฌํ๋ ๊ฒ์ฒ๋ผ ์๋น์ค ๊ณ์ ์ ์ญํ ์ ๋ถ์ฌํ์ฌ ์ ์ ํ ๋ฆฌ์์ค์ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค.
๋ค๋ฅธ ํ๋ก์ ํธ์ ๋ฆฌ์์ค ๊ตฌ์ฑ
๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์๋ ๋ฆฌ์์ค์ ์๋น์ค ๊ณ์ ์ ์ฐ๊ฒฐํด์ผ ํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋จ์ผ ํ๋ก์ ํธ์ ๋ชจ๋ ์๋น์ค ๊ณ์ ์ ์์ฑํ๋ ๊ฒฝ์ฐ ์๋น์ค ๊ณ์ ์ค ํ๋๋ฅผ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํด์ผ ํ ์ ์์ต๋๋ค.
๋ค๋ฅธ ํ๋ก์ ํธ์ ๋ฆฌ์์ค์ ์๋น์ค ๊ณ์ ์ ์ฐ๊ฒฐํ๊ธฐ ์ ์ ๋ค์์ ์ํํ์ธ์.
- ์๋น์ค ๊ณ์ ์ด ์๋ ํ๋ก์ ํธ์์ ์ด ํ์ด์ง์ ๋จ๊ณ์ ๋ฐ๋ผ ํ๋ก์ ํธ ๊ฐ ์๋น์ค ๊ณ์ ์ฐ๊ฒฐ์ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
- ๋ฆฌ์์ค๋ฅผ ๋ง๋ค ํ๋ก์ ํธ๋ฅผ ์๋ณํฉ๋๋ค.
์๋น์ค ๊ณ์ ์ ์ฐ๊ฒฐํ ๋ฆฌ์์ค ์ ํ๊ณผ ํด๋น ์ ํ์ ๋ฆฌ์์ค๋ฅผ ์์ ํ ์๋น์ค๋ฅผ ํ์ธํฉ๋๋ค.
์๋ฅผ ๋ค์ด Pub/Sub ๊ตฌ๋ ์ ๋ง๋๋ ๊ฒฝ์ฐ Pub/Sub๋ ๋ฆฌ์์ค๋ฅผ ์์ ํ ์๋น์ค์ ๋๋ค.
์๋น์ค์ ๋ํ ์๋น์ค ์์ด์ ํธ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ฐพ์ต๋๋ค.
์๋น์ค๋ง๋ค ๋ค๋ฅธ ์๋น์ค ์์ด์ ํธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์๋น์ค ์์ด์ ํธ๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋น์ค ์์ด์ ํธ์ ์๋น์ค ๊ณ์ ํ ํฐ ์์ฑ์ ์ญํ (
roles/iam.serviceAccountTokenCreator
)์ ๋ถ์ฌํฉ๋๋ค.์ฝ์
Google Cloud ์ฝ์์์ ์๋น์ค ๊ณ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ฆฌ์์ค์ ์ฐ๊ฒฐํ ์๋น์ค ๊ณ์ ์ ์์ ํ ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค.
๋ฆฌ์์ค์ ์ฐ๊ฒฐํ ์๋น์ค ๊ณ์ ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ํด๋ฆญํฉ๋๋ค.
๊ถํ ํญ์ผ๋ก ์ด๋ํ๊ณ ์ด ์๋น์ค ๊ณ์ ์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ์๋ ์ฃผ ๊ตฌ์ฑ์ ์น์ ์ ์ฐพ์ต๋๋ค.
์ก์ธ์ค ๊ถํ ๋ถ์ฌ๋ฅผ ํด๋ฆญํ ํ ์๋น์ค ์์ด์ ํธ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์ญํ ์ ํ์ ํด๋ฆญํ๊ณ
Service Account Token Creator
๋ฅผ ์ ๋ ฅํ ํ ์ญํ ์ ํด๋ฆญํฉ๋๋ค.์ ์ฅ์ ํด๋ฆญํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฅํฉ๋๋ค.
์ ํ์ฌํญ: ๋ค๋ฅธ ์๋น์ค ์์ด์ ํธ์ ์ญํ ์ ๋ถ์ฌํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด์ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
gcloud
gcloud iam service-accounts add-iam-policy-binding
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member=serviceAccount:SERVICE_AGENT_EMAIL \ --role=roles/iam.serviceAccountTokenCreator
๋ค์ ๊ฐ์ ๋ฐ๊ฟ๋๋ค.
SERVICE_ACCOUNT_NAME
: ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ ์ฌ์ฉ์ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ ์ด๋ฆ.PROJECT_ID
: ์ฌ์ฉ์ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ด ์๋ ํ๋ก์ ํธ ID.SERVICE_AGENT_EMAIL
: ์๋น์ค ์์ด์ ํธ์ ์ด๋ฉ์ผ ์ฃผ์.
์ด ๋ช ๋ น์ด๋ ์ฌ์ฉ์ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ ์ ๋ฐ์ดํธ๋ ํ์ฉ ์ ์ฑ ์ ์ถ๋ ฅํฉ๋๋ค.
์ ํ์ฌํญ: ๋ค๋ฅธ ์๋น์ค ์์ด์ ํธ์ ์ญํ ์ ๋ถ์ฌํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ช ๋ น์ด๋ฅผ ๋ค์ ์คํํฉ๋๋ค.
REST
์ด ์ญํ ์ ๋ถ์ฌํ๋ ค๋ฉด ์ฝ๊ธฐ-์์ -์ฐ๊ธฐ ํจํด์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ ํ์ฉ ์ ์ฑ ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
๋จผ์ ์ฌ์ฉ์ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ ํ์ฉ ์ ์ฑ ์ ์ฝ์ต๋๋ค.
projects.serviceAccounts.getIamPolicy
๋ฉ์๋๋ ์๋น์ค ๊ณ์ ์ ๋ํ ํ์ฉ ์ ์ฑ ์ ๋ฐํํฉ๋๋ค.์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: Google Cloud ํ๋ก์ ํธ ID. ํ๋ก์ ํธ ID๋my-project
์ ๊ฐ์ ์์ซ์ ๋ฌธ์์ด์ ๋๋ค.-
USER_SA_NAME
: ๋ฆฌ์์ค์ ๋ฐ์ธ๋ฉํ ์ฌ์ฉ์ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ ์ด๋ฆ.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/USER_SA_NAME@PROJECT_ID.iam.gserviceaccount.com:getIamPolicy
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "requestedPolicyVersion": 3 }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "version": 1, "etag": "BwWl3KCTUMY=", "bindings": [ { "role": "roles/iam.serviceAccountUser", "members": [ "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com" ] } ] }
๋ค์์ผ๋ก ์๋น์ค ๊ณ์ ํ ํฐ ์๋น์ค ์์ฑ์ ์ญํ ์ ์๋น์ค ์์ด์ ํธ์ ๋ถ์ฌํ๋๋ก ํ์ฉ ์ ์ฑ ์ ์์ ํฉ๋๋ค.
{ "version": 1, "etag": "BwWl3KCTUMY=", "bindings": [ { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:SERVICE_AGENT_EMAIL" ] }, { "role": "roles/iam.serviceAccountUser", "members": [ "serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" ] } ] }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
SERVICE_AGENT_EMAIL
: ์๋น์ค ์์ด์ ํธ์ ์ด๋ฉ์ผ ์ฃผ์.SERVICE_ACCOUNT_NAME
: ์ฌ์ฉ์ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ ์ด๋ฆ.PROJECT_ID
: ์ฌ์ฉ์ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ด ์๋ ํ๋ก์ ํธ ID.
๋ง์ง๋ง์ผ๋ก ์ ๋ฐ์ดํธ๋ ํ์ฉ ์ ์ฑ ์ ์์ฑํฉ๋๋ค.
projects.serviceAccounts.setIamPolicy
๋ฉ์๋๋ ์๋น์ค ๊ณ์ ์ ๋ํ ํ์ฉ ์ ์ฑ ์ ์ ๋ฐ์ดํธํฉ๋๋ค.์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: Google Cloud ํ๋ก์ ํธ ID. ํ๋ก์ ํธ ID๋my-project
์ ๊ฐ์ ์์ซ์ ๋ฌธ์์ด์ ๋๋ค.-
USER_SERVICE_ACCOUNT_NAME
: ๋ฆฌ์์ค์ ๋ฐ์ธ๋ฉํ ์ฌ์ฉ์ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ ์ด๋ฆ. -
SERVICE_AGENT_EMAIL
: ์ฌ์ฉ์ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ ์ก์ธ์ค ํ ํฐ์ ๋ง๋ค ์๋น์ค ์์ด์ ํธ์ ์ด๋ฉ์ผ ์ฃผ์.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com:setIamPolicy
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "policy": { "version": 1, "etag": "BwWl3KCTUMY=", "bindings": [ { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:SERVICE_AGENT_EMAIL" ] }, { "role": "roles/iam.serviceAccountUser", "members": [ "serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" ] } ] } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "version": 1, "etag": "BwWo331TkHE=", "bindings": [ { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:SERVICE_AGENT_EMAIL" ] }, { "role": "roles/iam.serviceAccountUser", "members": [ "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com" ] } ] }
์ ๋ฆฌ์์ค์ ์๋น์ค ๊ณ์ ์ฐ๊ฒฐ
์ฌ์ฉ์ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ ๊ตฌ์ฑํ ํ์๋ ์ ๋ฆฌ์์ค๋ฅผ ๋ง๋ค๊ณ ํด๋น ๋ฆฌ์์ค์ ์๋น์ค ๊ณ์ ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ ์ ํ ํ๋ก์ ํธ์ ์ ๋ฆฌ์์ค๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
๋ง๋ค๋ ค๋ ๋ฆฌ์์ค ์ ํ์ ๋ํ ์๋ด๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฆฌ์์ค๋ฅผ ๋ง๋ค ๋ ์๋น์ค ๊ณ์ ์ฐ๊ฒฐ | |
---|---|
AI Platform Prediction | ๋ชจ๋ธ ๋ฒ์ |
AI Platform Training | ์์ |
App Engine ํ์ค ํ๊ฒฝ | ์ฑ ๋ฒ์ |
App Engine ๊ฐ๋ณํ ํ๊ฒฝ | ์ฑ ๋ฒ์ |
Cloud Composer | ํ๊ฒฝ |
Cloud Run Functions | Cloud Run ํจ์ |
Cloud Life Sciences | ํ์ดํ๋ผ์ธ |
Cloud Run | ์๋น์ค |
Cloud Scheduler | ์์ |
Cloud Source Repositories |
|
Compute Engine | |
Dataproc | ํด๋ฌ์คํฐ |
Google Kubernetes Engine | |
Notebooks | ๋ฉ๋ชจ์ฅ ์ธ์คํด์ค |
Pub/Sub | ๊ตฌ๋ |
๋ฆฌ์์ค๋ฅผ ๋ง๋ค๊ณ ์๋น์ค ๊ณ์ ์ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ ํ ์๋น์ค ๊ณ์ ์ ์ญํ ์ ๋ถ์ฌํ์ฌ ํด๋น ๋ฆฌ์์ค์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ด ํ๋ก์ธ์ค๋ ๋ค๋ฅธ ์ฃผ ๊ตฌ์ฑ์์ ์ญํ ์ ๋ถ์ฌํ๋ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค.
์ญํ ๋ถ์ฌ ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด ๋ฆฌ์์ค ์ก์ธ์ค ๊ถํ ๋ถ์ฌ, ๋ณ๊ฒฝ, ์ทจ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ค๋ฅธ ํ๋ก์ ํธ์ ๋ฆฌ์์ค์ ์๋น์ค ๊ณ์ ์ฐ๊ฒฐ
๊ธฐ๋ณธ์ ์ผ๋ก ํ ํ๋ก์ ํธ์์ ์๋น์ค ๊ณ์ ์ ๋ง๋ค์ด ๋ค๋ฅธ ํ๋ก์ ํธ์ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ํ ํ๋ก์ ํธ์ ๋ชจ๋ ์๋น์ค ๊ณ์ ์ ์ ์งํ๋ ค๋ฉด ํด๋น ํ๋ก์ ํธ์ ์กฐ์ง ์ ์ฑ ์ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
ํ๋ก์ ํธ ๊ฐ ์๋น์ค ๊ณ์ ์ฐ๊ฒฐ ์ฌ์ฉ ์ค์
์ฌ์ฉ์๊ฐ ํ ํ๋ก์ ํธ์ ์๋น์ค ๊ณ์ ์ ๋ค๋ฅธ ํ๋ก์ ํธ์ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ ์ ์๋๋ก ํ๋ ค๋ฉด ์๋น์ค ๊ณ์ ์ด ์๋ ํ๋ก์ ํธ์ ์กฐ์ง ์ ์ฑ ์์ ๋ค์ ๋ถ์ธ ์ ์ฝ์กฐ๊ฑด์ ํ์ธํฉ๋๋ค.
ํ๋ก์ ํธ์
iam.disableCrossProjectServiceAccountUsage
๋ถ์ธ ์ ์ฝ์กฐ๊ฑด์ด ์ ์ฉ๋์ง ์๋์ง ํ์ธํฉ๋๋ค.์ด ๋ถ๋ฆฌ์ธ ์ ์ฝ์กฐ๊ฑด์ ์๋น์ค ๊ณ์ ์ ๋ค๋ฅธ ํ๋ก์ ํธ์ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฉ๋๋ฉฐ ํด๋ ๋๋ ์กฐ์ง ์์ค์ด ์๋ ํ๋ก์ ํธ ์์ค์์๋ง ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ด ์ ์ฝ์กฐ๊ฑด์ด ์ ์ฉ๋์ง ์์ผ๋ฉด IAM์ ํ๋ก์ ํธ ์ญ์ ๋ฅผ ๋ฐฉ์งํ๋ ํ๋ก์ ํธ ์ ์ทจ๊ถ์ ์ถ๊ฐํฉ๋๋ค. ์ด ์ ์ทจ๊ถ์๋ ์๋ณธ
iam.googleapis.com/cross-project-service-accounts
๊ฐ ์์ต๋๋ค. ์ด ์ ์ทจ๊ถ์ ์ญ์ ํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.๊ถ์ฅ์ฌํญ: ํ๋ก์ ํธ์
iam.restrictCrossProjectServiceAccountLienRemoval
๋ถ์ธ ์ ์ฝ์กฐ๊ฑด์ด ์ ์ฉ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.์ด ๋ถ์ธ ์ ์ฝ์กฐ๊ฑด์ ์ฃผ ๊ตฌ์ฑ์์ด ์กฐ์ง ์์ค์
resourcemanager.projects.updateLiens
๊ถํ์ด ์๋ ๊ฒฝ์ฐ์๋ง ํ๋ก์ ํธ ์ ์ทจ๊ถ์ ์ญ์ ํ ์ ์๋๋ก ํฉ๋๋ค. ์ด ์ ์ฝ์กฐ๊ฑด์ด ์ ์ฉ๋์ง ์์ ๊ฒฝ์ฐ ์ฃผ ๊ตฌ์ฑ์์ด ํ๋ก์ ํธ ์์ค์์ ์ด ๊ถํ์ ๊ฐ์ง๊ณ ์์ผ๋ฉด ํ๋ก์ ํธ ์ ์ทจ๊ถ์ ์ญ์ ํ ์ ์์ต๋๋ค.
์กฐ์ง ์ ์ฑ ์์ ๋ถ๋ฆฌ์ธ ์ ์ฝ์กฐ๊ฑด์ ๋ณด๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด ์กฐ์ง ์ ์ฑ ๋ง๋ค๊ธฐ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ๋ก์ ํธ ๊ฐ ์๋น์ค ๊ณ์ ์ฐ๊ฒฐ ์ฌ์ฉ ์ค์ง
์ด์ ์ ํ๋ก์ ํธ ๊ฐ ์๋น์ค ๊ณ์ ์ฐ๊ฒฐ์ ์ฌ์ฉ ์ค์ ํ ๊ฒฝ์ฐ, ํนํ ํ๋ก๋์ ํ๊ฒฝ์์ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉ ์ค์งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํนํ ์๋น์ค ๊ณ์ ์ด ์๋ ํ๋ก์ ํธ์์๋ ๋ค์์ ๋ณ๊ฒฝํด์๋ ์ ๋ฉ๋๋ค.
iam.disableCrossProjectServiceAccountUsage
๋ถ๋ฆฌ์ธ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ฉํ๊ธฐ ์ํด ํ๋ก์ ํธ์ ์กฐ์ง ์ ์ฑ ์ ์ ๋ฐ์ดํธํ์ง ๋ง์ธ์.iam.restrictCrossProjectServiceAccountLienRemoval
๋ถ๋ฆฌ์ธ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ฉํ์ง ์๊ธฐ ์ํด ํ๋ก์ ํธ์ ์กฐ์ง ์ ์ฑ ์ ์ ๋ฐ์ดํธํ์ง ๋ง์ธ์.- ํ๋ก์ ํธ๊ฐ ์ญ์ ๋์ง ์๋๋ก ์๋ณธ
iam.googleapis.com/cross-project-service-accounts
๊ฐ ์๋ ํ๋ก์ ํธ ์ ์ทจ๊ถ์ ์ญ์ ํ์ง ๋ง์ธ์. - ํ๋ก์ ํธ๋ฅผ ์ญ์ ํ์ง ๋ง์ธ์.
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉ ์ค์งํ ์ํ์ ๊ฐ์ํ๋ ค๋ ๊ฒฝ์ฐ ํ๋ก์ ํธ ๊ฐ์ ์ฌ์ฉ ์ค์ธ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉ ์ค์งํ ํ ๋ฌธ์ ์ ๋ํด Google Cloud ํ๊ฒฝ์ ๋ชจ๋ํฐ๋งํ์ฌ ์ํ์ ์ค์ผ ์ ์์ต๋๋ค. ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์๋น์ค ๊ณ์ ์ ๋ค์ ์ฌ์ฉ ์ค์ ํ ์ ์์ต๋๋ค. ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ผ๋ฉด ๋ค๋ฅธ ํ๋ก์ ํธ์ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ๋ Google Cloud๋ฆฌ์์ค๊ฐ ์๋ ๊ฒ์ผ ์ ์์ต๋๋ค.
์๋น์ค ๊ณ์ ์ฐ๊ฒฐ์ ๋ํ ๊ฐ์ฌ ๋ก๊ทธ
์ฃผ ๊ตฌ์ฑ์์ด iam.serviceAccounts.actAs
๊ถํ์ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ณ์ ์ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ๋ฉด IAM์์ ๊ฐ์ฌ ๋ก๊ทธ๋ฅผ ์์ฑํฉ๋๋ค. ์ด ๊ฐ์ฌ ๋ก๊ทธ์๋ ๋ค์ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.
- ์๋น์ค ๊ณ์ ์ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ ์ฃผ ๊ตฌ์ฑ์์ ์ด๋ฉ์ผ ์ฃผ์
- ๋ฆฌ์์ค์ ์ฐ๊ฒฐ๋ ์๋น์ค ๊ณ์ ์ ๋ํ ์ธ๋ถ์ ๋ณด
์๋น์ค ๊ณ์ ์ ์ฐ๊ฒฐํ ์ ์๋ ๋ฆฌ์์ค ๋ชฉ๋ก์ ์ด ํ์ด์ง์ ์ ๋ฆฌ์์ค์ ์๋น์ค ๊ณ์ ์ฐ๊ฒฐ์ ์ฐธ์กฐํ์ธ์.
์ด ์ ํ์ ๊ฐ์ฌ ๋ก๊ทธ ์์๋ iam.serviceAccounts.actAs
๊ถํ ์ฌ์ฉ์ ๋ํ ๋ก๊ทธ๋ฅผ ์ฐธ์กฐํ์ธ์. ๊ฐ์ฌ ๋ก๊ทธ์ ๋ํ ์ผ๋ฐ์ ์ธ ์ ๋ณด๋ Cloud ๊ฐ์ฌ ๋ก๊ทธ ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ค์ ๋จ๊ณ
- Compute Engine ์ธ์คํด์ค์ ์๋น์ค ๊ณ์ ์ฐ๊ฒฐ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
- ์๋น์ค ๊ณ์ ๋ณด์์ ์ํ ๊ถ์ฅ์ฌํญ ๊ฒํ ๋ฐ ์ ์ฉ
- IAM์ ๊ฐ์ฌ ๋ก๊น ์ ๋ํด ์์ธํ ์์๋ณด๊ธฐ