IAM์ผ๋ก ์ก์ธ์ค ์ ์ด
์ด ํ์ด์ง์์๋ Identity and Access Management(IAM) ์ญํ ์ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ์์ค์์ ์ก์ธ์ค ์ ์ด๋ฅผ ์ค์ ํ๊ณ , gcloud functions
๋ช
๋ น์ด ๋๋ Cloud Functions v2 API๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ Google Cloud ํ๋ก์ ํธ ๋ฐ ํจ์์ ๋ํ ์ก์ธ์ค ์์ค์ ๊ฒฐ์ ํ๋ ๋ฐ ํ์ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
Cloud Run์ ์ฌ์ฉํ์ฌ ํจ์๋ฅผ ๋ง๋ค๊ฑฐ๋ ๋ฐฐํฌํ ๊ฒฝ์ฐ Cloud Run ์ฌ์ ์ ์ ์ญํ , ๊ฐ๋ณ ์๋น์ค์ ๋ํ ์ก์ธ์ค ์ ์ด, ์๋น์ค ๊ณต๊ฐ, Cloud Run ํธ์ถ์ IAM์ ์กฐ์ง ์ ์ฑ ๊ตฌ์ฑ์ ๊ดํ ์์ธํ ์ค๋ช ์ IAM์ผ๋ก ์ก์ธ์ค ์ ์ด ๋ฐ Cloud Run ์ญํ ์ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ์ ์ก์ธ์ค ์ ์ด
IAM์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๋ฅผ ํ๋ก์ ํธ์ ํ ๊ตฌ์ฑ์์ผ๋ก ์ถ๊ฐํ๊ณ ์ญํ ์ ๋ถ์ฌํฉ๋๋ค.
Cloud Run Functions๋ ๋ค์ ์ญํ ์ ์ง์ํฉ๋๋ค.
- Cloud Run ์ฌ์ ์ ์๋ ์ญํ (์ถ์ฒ)
- Cloud Functions ์ฌ์ ์ ์๋ ์ญํ
- ํธ์ง์, ์์ ์, ๋ทฐ์ด์ ๊ธฐ๋ณธ ์ญํ
์๋น์ค ๊ณ์ ์ ๋ํ ์ก์ธ์ค ์ ์ด
์๋น์ค ๊ณ์ ์ ํน์ํ ์ ํ์Google Cloud ๊ณ์ ์ผ๋ก, ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ๋ค์ํ ์์ ์ ์ํํ๋๋ก ์ธ์ฆ ๋ฐ ์น์ธ๋์ด์ผ ํ๋ ์ธ๊ฐ์ด ์๋ ์ฌ์ฉ์์ ID ์ญํ ์ ํฉ๋๋ค. ์ด๋ฌํ ๊ณ์ ์ค ์ผ๋ถ๋ฅผ Google์์ ์ง์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ๋ฉฐ ์ด๋ฅผ ์๋น์ค ์์ด์ ํธ๋ผ๊ณ ํฉ๋๋ค.
Cloud Run Functions์์ ์ฌ์ฉ๋๋ ์๋น์ค ๊ณ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๋ฆ | ๊ตฌ์ฑ์ ID | ์ญํ |
---|---|---|
Compute Engine ๊ธฐ๋ณธ ์๋น์ค ๊ณ์ | PROJECT_NUMBER-compute@developer.gserviceaccount.com |
ํธ์ง์ |
Google Cloud Functions ์๋น์ค ์์ด์ ํธ | service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com |
Google Cloud Functions ์๋น์ค ์์ด์ ํธ |
๊ธฐ์กด Cloud Build ์๋น์ค ๊ณ์ 1 | PROJECT_NUMBER@cloudbuild.gserviceaccount.com |
Cloud Build ์๋น์ค ๊ณ์ |
Cloud Build ์๋น์ค ๊ณ์ | service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com |
Cloud Build ์๋น์ค ์์ด์ ํธ |
Google Container Registry ์๋น์ค ์์ด์ ํธ | service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com |
Container Registry ์๋น์ค ์์ด์ ํธ |
Artifact Registry ์๋น์ค ์์ด์ ํธ | service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com |
Artifact Registry ์๋น์ค ์์ด์ ํธ |
๋ฐํ์ ์๋น์ค ๊ณ์
๋ฐํ์ ์ Cloud Run Functions๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก์ ํธ์ ๋ํ ํธ์ง์ ์ญํ ๋ ์๋ Compute Engine ๊ธฐ๋ณธ ์๋น์ค ๊ณ์ (PROJECT_NUMBER-compute@developer.gserviceaccount.com
)์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฌํ ์๋น์ค ๊ณ์ ์ ์ญํ ์ ๋ณ๊ฒฝํ์ฌ ์คํ ์ค์ธ ํจ์์ ๋ํ ๊ถํ์ ์ ํํ๊ฑฐ๋ ํ์ฅํ ์ ์์ต๋๋ค. ์๋น์ค ID๋ฅผ ๊ตฌ์ฑํ ๋ ๊ธฐ๋ณธ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ํ์ฌ ์ฌ์ฉ๋๋ ์๋น์ค ๊ณ์ ์ ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค.
์๋น์ค ๊ณ์ ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ์๋น์ค ๊ณ์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ด๋ฆฌ ์๋น์ค ๊ณ์
ํจ์๋ฅผ ์์ฑ, ์
๋ฐ์ดํธ ๋๋ ์ญ์ ํ๋ ๋์ ํ๋ก์ ํธ์์ ๊ด๋ฆฌ ์์
์ ์ํํ๋ ค๋ฉด Cloud Run Functions์ ๋ชจ๋ ํ๋ก์ ํธ์ Google Cloud Functions ์๋น์ค ์์ด์ ํธ ์๋น์ค ๊ณ์ (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
)์ด ํ์ํฉ๋๋ค.
๋ํ ๋ชจ๋ ๋ฐํ์์ ํ๋ก์ ํธ ๋ด์์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋น๋์ ์คํ ๋ฆฌ์ง๋ฅผ ์ํํฉ๋๋ค. ์ด๋ฅผ ์ง์ํ๋ ค๋ฉด ๋ค์์ ํ๋ก๋น์ ๋ํด์ผ ํฉ๋๋ค.
- ๊ธฐ์กด Cloud Build ์๋น์ค ๊ณ์ 1 (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
) - Cloud Build ์๋น์ค ์์ด์ ํธ ์๋น์ค ๊ณ์ (
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com
) - Google Container Registry ์๋น์ค ์์ด์ ํธ ์๋น์ค ๊ณ์ (
service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com
)
์ด๋ฌํ ์๋น์ค ๊ณ์ ์๋ ์ด์ ํ์ ๋์ด๋ ์ญํ ์ด ์์ด์ผ ํฉ๋๋ค.
Google Cloud Functions ์๋น์ค ์์ด์ ํธ ์๋น์ค ๊ณ์
๊ธฐ๋ณธ์ ์ผ๋ก Google Cloud Functions ์๋น์ค ์์ด์ ํธ ์๋น์ค ๊ณ์ (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
)์๋ ํ๋ก์ ํธ์ ๋ํ cloudfunctions.serviceAgent ์ญํ ์ด ์์ต๋๋ค.
๋ค์์ cloudfunctions.serviceAgent
์์ ์ฌ์ฉํ๋ ๋ช ๊ฐ์ง ์ฃผ์ ๊ถํ์
๋๋ค.
๊ถํ | ์ค๋ช |
---|---|
roles/artifactregistry.admin |
Artifact Registry์์ ์ ์ฅ์๋ฅผ ๊ด๋ฆฌํ๊ณ ๋น๋ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํฉ๋๋ค. |
roles/cloudbuild.builds.editor |
์ฌ์ฉ์ ํ๋ก์ ํธ์์ ๋น๋๋ฅผ ์ํํ๊ธฐ ์ํด Cloud Build๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ํ์ํฉ๋๋ค. |
roles/cloudbuild.customworkers.builder |
Cloud Build ์ปค์คํ ์์ ์์์ ๋น๋๋ฅผ ๋ง๋ญ๋๋ค. |
compute.globalOperations.get ,compute.networks.access ,vpcaccess.connectors.{get, use} |
์๋น์ ํ๋ก์ ํธ VPC์ ์ก์ธ์คํ ์ ์๋ ํจ์๋ฅผ ํ๋ก๋น์ ๋ํฉ๋๋ค. |
roles/eventarc.developer |
ํจ์์ Eventarc ํธ๋ฆฌ๊ฑฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. |
firebasedatabase.instances.{get, update} |
Firebase ์ค์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํด ํธ๋ฆฌ๊ฑฐ๋ ํจ์๋ฅผ ์์ฑํฉ๋๋ค. |
iam.serviceAccounts.{actAs, getAccessToken, signBlob} |
๋ฐํ์ ์๋น์ค ๊ณ์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ต๋๋ค. |
iam.serviceAccounts.getOpenIdToken |
์์ด์ ํธ๊ฐ ์ฌ์ฉ์ ์ง์ ๊ถํ์ ๋ํ OpenID ํ ํฐ์ ๊ฐ์ ธ์ค๋ ๋ฐ ํ์ํฉ๋๋ค. OpenID ํ ํฐ์ IAM์ด ์ฌ์ฉ ์ค์ ๋ ํจ์๋ฅผ ํธ์ถํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. |
pubsub.subscriptions |
์ฌ์ฉ์ ํ๋ก์ ํธ์ ๊ตฌ๋ ์ ๊ด๋ฆฌํฉ๋๋ค. |
pubsub.topics |
์ฌ์ฉ์ ํ๋ก์ ํธ์ ์ฃผ์ ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. |
roles/run.developer |
ํจ์์ Cloud Run ์๋น์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. |
storage.buckets.create ,storage.objects.{delete, get, create, list} |
์ฌ์ฉ์ ํ๋ก์ ํธ์ ์์ค ์ฝ๋๋ฅผ ์ ์ฅํ๋ ๋ฐ ํ์ํฉ๋๋ค. |
์ฌ์ ์ ์๋ IAM ์ญํ ์์ ๋๋ ์ด ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์ ์ฒด ๊ถํ ์งํฉ์ ๋ณผ ์ ์์ต๋๋ค.
gcloud iam roles describe roles/cloudfunctions.serviceAgent
ํ์ฌ ์ฌ์ฉํ๋ ์๋น์ค ์ญํ ์ ์ ๊ฑฐํ๊ณ Cloud Functions ์๋น์ค ์์ด์ ํธ ์ญํ ์ ์ถ๊ฐํ์ฌ ์ด ์๋น์ค ๊ณ์ ์ ๊ธฐ๋ณธ ์ญํ ๋ก ์ฌ์ค์ ํ์ธ์.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \ --role roles/cloudfunctions.serviceAgent
๊ถํ ์ค๋ฅ ๋ฌธ์ ํด๊ฒฐ
ํ๋ก์ ํธ์์ ํจ์๋ฅผ ๋ฐฐํฌ, ์ ๋ฐ์ดํธ, ์ญ์ ๋๋ ์คํ ์์ ๊ถํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
ํ๋ก์ ํธ์ ๋ํ ํธ์ง์ ๋๋ ์์ ์ ์ญํ ์ด ์๋์ง Cloud Functions ๊ฐ๋ฐ์ ์ญํ ์ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
ํ๋ก์ ํธ ์์ค์์ Cloud Functions ๊ฐ๋ฐ์ ์ญํ ์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ๋ฐ๋์ ์ฌ์ฉ์์๊ฒ IAM ์๋น์ค ๊ณ์ ์ฌ์ฉ์ ์ญํ ์ ๋ถ์ฌํด์ผ ํฉ๋๋ค.
ํ์ฌ ํจ์๋ณ ์์ค์์๋ ์คํ ๊ถํ๋ง ํ์ฉ๋ฉ๋๋ค.
Cloud Functions ์๋น์ค ์์ด์ ํธ ์๋น์ค ๊ณ์ (
service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
)์ ํ๋ก์ ํธ์ ๋ํ Cloud Functions ์๋น์ค ์์ด์ ํธ(cloudfunctions.serviceAgent
) ์ญํ ์ด ์๋์ง ํ์ธํฉ๋๋ค.์ด ๊ณ์ ์ ํ์ํ๋ ค๋ฉด Console IAM ํ์ด์ง์ ๊ถํ ํญ์์ Google ์ ๊ณต ์ญํ ๋ถ์ฌ ํฌํจ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํฉ๋๋ค.
gcloud projects add-iam-policy-binding PROJECT_ID
๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.Pub/Sub ๋๋ Cloud Storage์ ๊ฐ์ ํธ๋ฆฌ๊ฑฐ ์์ค์ ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค.
ํจ์ ์คํ ์ '๊ถํ ๋ถ์กฑ' ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ๋ค๋ฅธ ์ธ์ฆ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ, ๋ฐํ์ ์๋น์ค ๊ณ์ ์ ํจ์์์ ํ์ํ ๋ฆฌ์์ค์ ์ก์ธ์คํ ์ ์๋ ์ฌ๋ฐ๋ฅธ ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ 2๋จ๊ณ์ 3๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
๋ฐฐํฌ ์ค์ '์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์์' ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ฐํ์ ์๋น์ค ๊ณ์ PROJECT_ID@appspot.gserviceaccount.com
์ด ํ๋ก์ ํธ์ ์๋์ง ํ์ธํฉ๋๋ค. ์๋น์ค ๊ณ์ ์ด ์ญ์ ๋ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ค์ ๋ง๋ค๋ ค๋ฉด ์๋น์ค ๊ณ์ ์ญ์ ์ทจ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Cloud Run Functions ๋ฌธ์ ํด๊ฒฐ๋ ์ฐธ์กฐํ์ธ์.
1 Cloud Run Functions๋ 2024๋ 7์ ์ ์ ์์ฑ๋ ํ๋ก์ ํธ์๋ง ๊ธฐ์กด Cloud Build ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํฉ๋๋ค.