๊ถํ ๋ถ์ฌ ์ํ์ ๊ธฐ๋ก์ ๋ณด๊ฑฐ๋ ํ์ฑํ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ฃผ ๊ตฌ์ฑ์์ ๊ถํ ๋ถ์ฌ๋ฅผ ์ทจ์ํ ์ ์์ต๋๋ค. ๊ถํ ๋ถ์ฌ ๊ธฐ๋ก์ ๊ถํ ๋ถ์ฌ๊ฐ ์ข ๋ฃ๋ ํ 30์ผ ๋์ ์ ๊ณต๋ฉ๋๋ค.
์์ํ๊ธฐ ์ ์
Privileged Access Manager๋ฅผ ์ฌ์ฉ ์ค์ ํ๊ณ ๊ถํ์ ์ค์ ํ๋์ง ํ์ธํฉ๋๋ค.
Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ ๊ถํ ๋ถ์ฌ ๋ณด๊ธฐ
๊ถํ ๋ถ์ฌ๋ฅผ ๋ณด๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ์๋ฃํฉ๋๋ค.
Privileged Access Manager ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๊ถํ ๋ถ์ฌ๋ฅผ ๋ณด๋ ค๋ ์กฐ์ง, ํด๋ ๋๋ ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค.
๊ถํ ๋ถ์ฌ ํญ๊ณผ ๋ชจ๋ ์ฌ์ฉ์์ ๊ถํ ๋ถ์ฌ ํญ์ ์ฐจ๋ก๋ก ํด๋ฆญํฉ๋๋ค. ์ด ํญ์๋ ๋ชจ๋ ๊ถํ ๋ถ์ฌ, ๊ถํ ๋ถ์ฌ ์์ฒญ์, ๊ถํ ๋ถ์ฌ ์ํ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๊ถํ ๋ถ์ฌ ์ํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ํ ์ค๋ช ํ์ฑํ ์ค ๊ถํ ๋ถ์ฌ๊ฐ ํ์ฑํ๋๋ ์ค์ ๋๋ค. ํ์ฑํ ์คํจ Privileged Access Manager๊ฐ ์ฌ์๋ํ ์ ์๋ ์ค๋ฅ๋ก ์ธํด ์ญํ ์ ๋ถ์ฌํ ์ ์์ต๋๋ค. ํ์ฑ ๊ถํ ๋ถ์ฌ๊ฐ ํ์ฑํ๋์๊ณ ์ฃผ ๊ตฌ์ฑ์์ ํด๋น ์ญํ ์ ํ์ฉ๋๋ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ์์ต๋๋ค. ์น์ธ ๋๊ธฐ ์ค ๊ถํ ๋ถ์ฌ ์์ฒญ์ด ์น์ธ์์ ๊ฒฐ์ ์ ๊ธฐ๋ค๋ฆฌ๋ ์ค์ ๋๋ค. ๊ฑฐ๋ถ๋จ ์น์ธ์๊ฐ ๊ถํ ๋ถ์ฌ ์์ฒญ์ ๊ฑฐ๋ถํ์ต๋๋ค. ์ข ๋ฃ ๊ถํ ๋ถ์ฌ๊ฐ ์ข ๋ฃ๋์๊ณ ์ญํ ์ด ์ฃผ ๊ตฌ์ฑ์์์ ์ญ์ ๋์์ต๋๋ค. ๋ง๋ฃ๋จ 24์๊ฐ ๋ด์ ์น์ธ์ด ๋ถ์ฌ๋์ง ์์์ ๊ถํ ๋ถ์ฌ ์์ฒญ์ด ๋ง๋ฃ๋์์ต๋๋ค. ์ทจ์๋จ ๊ถํ ๋ถ์ฌ๊ฐ ์ทจ์๋์๊ณ ์ญํ ์ ํ์ฉ๋๋ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ๋ ์ด์ ์ฃผ ๊ตฌ์ฑ์์๊ฒ ์์ต๋๋ค. ์ทจ์ ์ค ๊ถํ ๋ถ์ฌ๋ฅผ ์ทจ์ํ๋ ์ค์ ๋๋ค. ์ํ ๋ผ๋ฒจ
์ด๋ฌํ ์ํ ์ธ์๋ ํด๋น ์ํ ์์ ํน์ ์กฐ๊ฑด์ ๋ํ๋ด๋ ๋ค์๊ณผ ๊ฐ์ ์ํ ๋ผ๋ฒจ์ด ๊ถํ ๋ถ์ฌ์ ํ์๋ ์ ์์ต๋๋ค.
IAM์ ํตํด ์์ ๋จ
์ด ๊ถํ ๋ถ์ฌ์ ์ฐ๊ฒฐ๋ IAM ์ ์ฑ ๋ฐ์ธ๋ฉ์ด IAM์ ํตํด ์ง์ ์์ ๋์์ต๋๋ค. ์์ ๋ ๋ฐ์ธ๋ฉ์ ๋ํ ์์ธํ ๋ด์ฉ์ Google Cloud ์ฝ์์์ IAM ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ ๋ ๊ถํ ๋ถ์ฌ๊ฐ ์ทจ์๋์๊ฑฐ๋ ์ข ๋ฃ๋๋ฉด Privileged Access Manager์์ ์์ฑ๋ ๋ฐ์ธ๋ฉ ์ค์์ IAM์ ํตํด ์์ ๋์ง ์์ ๋ฐ์ธ๋ฉ๋ง ์ญ์ ํฉ๋๋ค.
IAM ์กฐ๊ฑด ์ ๋ชฉ์ด๋ ํํ์์ ์์ ํ๊ฑฐ๋ ๊ถํ ๋ถ์ฌ๋ ์ญํ ์ ๋ํ ์์ฒญ์์ ์ก์ธ์ค ๊ถํ์ ์ญ์ ํ๋ ์์ ์ ์ธ๋ถ ์์ ์ผ๋ก ์ทจ๊ธ๋ฉ๋๋ค. IAM ์กฐ๊ฑด ์ค๋ช ์ ์ถ๊ฐํ๊ฑฐ๋ ์์ ํ๋ ์์ ์ ์ธ๋ถ ์์ ์ผ๋ก ๊ฐ์ฃผ๋์ง ์์ต๋๋ค.
Privileged Access Manager๋ 5๋ถ๋ง๋ค ๊ถํ ๋ถ์ฌ์ ๋ํ ์ธ๋ถ ์์ ์ ํ์ธํฉ๋๋ค. ๋ณ๊ฒฝ์ฌํญ์ด ๋ฐ์๋๋ ๋ฐ ์ต๋ 5๋ถ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ์ด๋ฌํ 5๋ถ ๊ธฐ๊ฐ ๋ด์ ์ํ๋๊ณ ๋๋๋ ค์ง ์ผ์์ ์ธ ๋ณ๊ฒฝ์ฌํญ์ Privileged Access Manager์์ ๊ฐ์ง๋์ง ์์ ์ ์์ต๋๋ค.
ํ ์ด๋ธ์ ์กฐ์ฌํ๋ ค๋ ์ฌ์ฉ ๊ถํ๊ณผ ๋์ผํ ํ์์
์ถ๊ฐ ์ต์ ์ ํด๋ฆญํฉ๋๋ค.๊ธฐ๋ก์ ํฌํจํ์ฌ ๊ถํ ๋ถ์ฌ ์ธ๋ถ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ์ธ๋ถ์ ๋ณด ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค. ์ด ํจ๋์์ ๊ถํ ๋ถ์ฌ๋ฅผ ์ทจ์ํ ์๋ ์์ต๋๋ค.
ํ์ฑํ๋ ๊ถํ ๋ถ์ฌ๋ฅผ ์ทจ์ํ๋ ค๋ฉด ๊ถํ ๋ถ์ฌ ์ทจ์๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ํ Google Cloud ์ฝ์์ IAM ํ์ด์ง์์ ์ผ์์ ์ผ๋ก ๊ถํ ๋ถ์ฌ๋ ์ญํ ์ ๋ณผ ์ ์์ต๋๋ค. ์ฃผ ๊ตฌ์ฑ์๋ณ๋ก ๋ณด๊ธฐ ํญ์์ ์ผ์์ ์ผ๋ก ๊ถํ ๋ถ์ฌ๋ ์ญํ ์๋ ์์ฑ์: PAM ์กฐ๊ฑด์ด ํฌํจ๋ฉ๋๋ค.
ํ๋ก๊ทธ๋๋งคํฑ ๋ฐฉ์์ผ๋ก ๊ถํ ๋ถ์ฌ ๋ณด๊ธฐ
ํ๋ก๊ทธ๋๋งคํฑ ๋ฐฉ์์ผ๋ก ๊ถํ ๋ถ์ฌ๋ฅผ ๋ณด๋ ค๋ฉด ๊ถํ ๋ถ์ฌ๋ฅผ ๊ฒ์ํ๊ณ ๋์ดํ๊ณ ๊ฐ์ ธ์ค๋ฉด ๋ฉ๋๋ค.
๊ถํ ๋ถ์ฌ ๊ฒ์
gcloud
gcloud pam grants search
๋ช
๋ น์ด๋ ์ฌ์ฉ์๊ฐ ๋ง๋ค์๊ฑฐ๋ ์น์ธ ๋๋ ๊ฑฐ๋ถํ ์ ์๊ฑฐ๋ ์ด๋ฏธ ์น์ธ ๋๋ ๊ฑฐ๋ถํ ๊ถํ ๋ถ์ฌ๋ฅผ ๊ฒ์ํฉ๋๋ค. ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ ํน์ Privileged Access Manager ๊ถํ์ ํ์ํ์ง ์์ต๋๋ค.
์๋์ ๋ช ๋ น์ด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
ENTITLEMENT_ID
: ๊ถํ ๋ถ์ฌ๊ฐ ์ํ ์ฌ์ฉ ๊ถํ์ ID์ ๋๋ค. ์ฌ์ฉ ๊ถํ์ ๋ณด๊ณ ID๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.-
CALLER_RELATIONSHIP_TYPE
: ๋ค์ ์ค ํ ๊ฐ์ง ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.had-created
: ํธ์ถ์๊ฐ ๋ง๋ ๊ถํ ๋ถ์ฌ๋ฅผ ๋ฐํํฉ๋๋ค.had-approved
: ํธ์ถ์๊ฐ ์น์ธ ๋๋ ๊ฑฐ๋ถํ ๊ถํ ๋ถ์ฌ๋ฅผ ๋ฐํํฉ๋๋ค.can-approve
: ํธ์ถ์๊ฐ ์น์ธ ๋๋ ๊ฑฐ๋ถํ ์ ์๋ ๊ถํ ๋ถ์ฌ๋ฅผ ๋ฐํํฉ๋๋ค.
RESOURCE_TYPE
: ์ ํ์ฌํญ. ์ฌ์ฉ ๊ถํ์ด ์ํ ๋ฆฌ์์ค ์ ํ์ ๋๋ค.organization
,folder
๋๋project
๊ฐ์ ์ฌ์ฉํฉ๋๋ค.RESOURCE_ID
:RESOURCE_TYPE
์ ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ์ฉ ๊ถํ์ ๊ด๋ฆฌํ๋ ค๋ Google Cloudํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ID์ ๋๋ค. ํ๋ก์ ํธ ID๋my-project
์ ๊ฐ์ ์์ซ์ ๋ฌธ์์ด์ ๋๋ค. ํด๋ ๋ฐ ์กฐ์ง ID๋123456789012
์ ๊ฐ์ ์ซ์์ ๋๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
Linux, macOS ๋๋ Cloud Shell
gcloud pam grants search \ --entitlement=ENTITLEMENT_ID \ --caller-relationship=CALLER_RELATIONSHIP_TYPE \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows(PowerShell)
gcloud pam grants search ` --entitlement=ENTITLEMENT_ID ` --caller-relationship=CALLER_RELATIONSHIP_TYPE ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows(cmd.exe)
gcloud pam grants search ^ --entitlement=ENTITLEMENT_ID ^ --caller-relationship=CALLER_RELATIONSHIP_TYPE ^ --location=global ^ --RESOURCE_TYPE=RESOURCE_ID
๋ค์๊ณผ ๋น์ทํ ์๋ต์ด ํ์๋ฉ๋๋ค.
additionalEmailRecipients: - bola@example.com createTime: '2024-03-07T00:34:32.557017289Z' justification: unstructuredJustification: Renaming a file to mitigate issue #312 name: projects/my-project/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID privilegedAccess: gcpIamAccess: resource: //cloudresourcemanager.googleapis.com/projects/my-project resourceType: cloudresourcemanager.googleapis.com/Project roleBindings: - role: roles/storage.admin requestedDuration: 3600s requester: cruz@example.com state: DENIED timeline: events: - eventTime: '2024-03-07T00:34:32.793769042Z' requested: expireTime: '2024-03-08T00:34:32.793769042Z' - denied: actor: alex@example.com reason: Issue has already been resolved eventTime: '2024-03-07T00:36:08.309116203Z' updateTime: '2024-03-07T00:34:32.926967128Z'
REST
Privileged Access Manager API์ searchGrants
๋ฉ์๋๋ ์ฌ์ฉ์๊ฐ ๋ง๋ค์๊ฑฐ๋ ์น์ธ ๋๋ ๊ฑฐ๋ถํ ์ ์๊ฑฐ๋ ์ด๋ฏธ ์น์ธ ๋๋ ๊ฑฐ๋ถํ ๊ถํ ๋ถ์ฌ๋ฅผ ๊ฒ์ํฉ๋๋ค. ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ ํน์ Privileged Access Manager ๊ถํ์ ํ์ํ์ง ์์ต๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
SCOPE
: ์ฌ์ฉ ๊ถํ์ด ์๋ ์กฐ์ง, ํด๋, ํ๋ก์ ํธ๋ก,organizations/ORGANIZATION_ID
,folders/FOLDER_ID
๋๋projects/PROJECT_ID
ํ์์ ๋๋ค. ํ๋ก์ ํธ ID๋my-project
์ ๊ฐ์ ์์ซ์ ๋ฌธ์์ด์ ๋๋ค. ํด๋ ๋ฐ ์กฐ์ง ID๋123456789012
์ ๊ฐ์ ์ซ์์ ๋๋ค.ENTITLEMENT_ID
: ๊ถํ ๋ถ์ฌ๊ฐ ์ํ ์ฌ์ฉ ๊ถํ์ ID์ ๋๋ค. ์ฌ์ฉ ๊ถํ์ ๋ณด๊ณ ID๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.RELATIONSHIP_TYPE
: ์ ํจํ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.HAD_CREATED
: ํธ์ถ์๊ฐ ๋ง๋ ๊ถํ ๋ถ์ฌ๋ฅผ ๋ฐํํฉ๋๋ค.HAD_APPROVED
: ํธ์ถ์๊ฐ ์ด์ ์ ์น์ธ ๋๋ ๊ฑฐ๋ถํ ์ฌ์ฉ ๊ถํ์ ๋ฐํํฉ๋๋ค.CAN_APPROVE
: ํธ์ถ์๊ฐ ์น์ธ ๋๋ ๊ฑฐ๋ถํ ์ ์๋ ๊ถํ ๋ถ์ฌ๋ฅผ ๋ฐํํฉ๋๋ค.
FILTER
: ์ ํ์ฌํญ. ํ๋ ๊ฐ์ด AIP-160 ํํ์๊ณผ ์ผ์นํ๋ ๊ถํ ๋ถ์ฌ๋ฅผ ๋ฐํํฉ๋๋ค.PAGE_SIZE
: ์ ํ์ฌํญ. ์๋ต์ ๋ฐํํ ํญ๋ชฉ ์์ ๋๋ค.PAGE_TOKEN
: ์ ํ์ฌํญ. ์ด์ ์๋ต์์ ๋ฐํ๋ ํ์ด์ง ํ ํฐ์ ์ฌ์ฉํ์ฌ ์๋ต์ ์์ํ๋ ํ์ด์ง์ ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://privilegedaccessmanager.googleapis.com/v1/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants:search?callerRelationship=RELATIONSHIP_TYPE&filter=FILTER&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "grants": [ { "name": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID", "createTime": "2024-03-06T03:08:49.330577625Z", "updateTime": "2024-03-06T03:08:49.625874598Z", "requester": "alex@example.com", "requestedDuration": "3600s", "justification": { "unstructuredJustification": "Emergency service for outage" }, "state": "APPROVAL_AWAITED", "timeline": { "events": [ { "eventTime": "2024-03-06T03:08:49.462765846Z", "requested": { "expireTime": "2024-03-07T03:08:49.462765846Z" } } ] }, "privilegedAccess": { "gcpIamAccess": { "resourceType": "cloudresourcemanager.googleapis.com/Project", "resource": "//cloudresourcemanager.googleapis.com/projects/my-project", "roleBindings": [ { "role": "roles/storage.admin" } ] } }, "additionalEmailRecipients": [ "bola@google.com" ] } ] }
๊ถํ ๋ถ์ฌ ๋์ด
gcloud
gcloud pam grants list
๋ช
๋ น์ด๋ ํน์ ์ฌ์ฉ ๊ถํ์ ์ํ๋ ๊ถํ ๋ถ์ฌ๋ฅผ ๋์ดํฉ๋๋ค.
์๋์ ๋ช ๋ น์ด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
ENTITLEMENT_ID
: ๊ถํ ๋ถ์ฌ๊ฐ ์ํ ์ฌ์ฉ ๊ถํ์ ID์ ๋๋ค. ์ฌ์ฉ ๊ถํ์ ๋ณด๊ณ ID๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.RESOURCE_TYPE
: ์ ํ์ฌํญ. ์ฌ์ฉ ๊ถํ์ด ์ํ ๋ฆฌ์์ค ์ ํ์ ๋๋ค.organization
,folder
๋๋project
๊ฐ์ ์ฌ์ฉํฉ๋๋ค.RESOURCE_ID
:RESOURCE_TYPE
์ ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ์ฉ ๊ถํ์ ๊ด๋ฆฌํ๋ ค๋ Google Cloudํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ID์ ๋๋ค. ํ๋ก์ ํธ ID๋my-project
์ ๊ฐ์ ์์ซ์ ๋ฌธ์์ด์ ๋๋ค. ํด๋ ๋ฐ ์กฐ์ง ID๋123456789012
์ ๊ฐ์ ์ซ์์ ๋๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
Linux, macOS ๋๋ Cloud Shell
gcloud pam grants list \ --entitlement=ENTITLEMENT_ID \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows(PowerShell)
gcloud pam grants list ` --entitlement=ENTITLEMENT_ID ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows(cmd.exe)
gcloud pam grants list ^ --entitlement=ENTITLEMENT_ID ^ --location=global ^ --RESOURCE_TYPE=RESOURCE_ID
๋ค์๊ณผ ๋น์ทํ ์๋ต์ด ํ์๋ฉ๋๋ค.
createTime: '2024-03-25T23:10:16.952789492Z' justification: unstructuredJustification: Adding missing file for service to work properly name: projects/my-project/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID privilegedAccess: gcpIamAccess: resource: //cloudresourcemanager.googleapis.com/projects/my-project resourceType: cloudresourcemanager.googleapis.com/Project roleBindings: - role: roles/storage.admin requestedDuration: 1800s requester: alex@example.com state: EXPIRED timeline: events: - eventTime: '2024-03-25T23:10:17.155612987Z' requested: expireTime: '2024-03-26T23:10:17.155612987Z' - eventTime: '2024-03-26T23:10:17.279777370Z' expired: {} updateTime: '2024-03-25T23:10:17.273416257Z'
REST
Privileged Access Manager API listGrants
๋ฉ์๋๋ ํน์ ์ฌ์ฉ ๊ถํ์ ์ํ๋ ๊ถํ ๋ถ์ฌ๋ฅผ ๋์ดํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
SCOPE
: ์ฌ์ฉ ๊ถํ์ด ์๋ ์กฐ์ง, ํด๋, ํ๋ก์ ํธ๋ก,organizations/ORGANIZATION_ID
,folders/FOLDER_ID
๋๋projects/PROJECT_ID
ํ์์ ๋๋ค. ํ๋ก์ ํธ ID๋my-project
์ ๊ฐ์ ์์ซ์ ๋ฌธ์์ด์ ๋๋ค. ํด๋ ๋ฐ ์กฐ์ง ID๋123456789012
์ ๊ฐ์ ์ซ์์ ๋๋ค.ENTITLEMENT_ID
: ๊ถํ ๋ถ์ฌ๊ฐ ์ํ ์ฌ์ฉ ๊ถํ์ ID์ ๋๋ค. ์ฌ์ฉ ๊ถํ์ ๋ณด๊ณ ID๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.FILTER
: ์ ํ์ฌํญ. ํ๋ ๊ฐ์ด AIP-160 ํํ์๊ณผ ์ผ์นํ๋ ๊ถํ ๋ถ์ฌ๋ฅผ ๋ฐํํฉ๋๋ค.PAGE_SIZE
: ์ ํ์ฌํญ. ์๋ต์ ๋ฐํํ ํญ๋ชฉ ์์ ๋๋ค.PAGE_TOKEN
: ์ ํ์ฌํญ. ์ด์ ์๋ต์์ ๋ฐํ๋ ํ์ด์ง ํ ํฐ์ ์ฌ์ฉํ์ฌ ์๋ต์ ์์ํ๋ ํ์ด์ง์ ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://privilegedaccessmanager.googleapis.com/v1/SCOPE/locations/global/entitlements/ENTITLEMENT_ID?filter=FILTER&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "grants": [ { "name": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID", "createTime": "2024-03-06T03:08:49.330577625Z", "updateTime": "2024-03-06T03:08:49.625874598Z", "requester": "alex@example.com", "requestedDuration": "3600s", "justification": { "unstructuredJustification": "Emergency service for outage" }, "state": "APPROVAL_AWAITED", "timeline": { "events": [ { "eventTime": "2024-03-06T03:08:49.462765846Z", "requested": { "expireTime": "2024-03-07T03:08:49.462765846Z" } } ] }, "privilegedAccess": { "gcpIamAccess": { "resourceType": "cloudresourcemanager.googleapis.com/Project", "resource": "//cloudresourcemanager.googleapis.com/projects/my-project", "roleBindings": [ { "role": "roles/storage.admin" } ] } }, "additionalEmailRecipients": [ "bola@google.com" ] } ] }
๊ถํ ๋ถ์ฌ ๊ฐ์ ธ์ค๊ธฐ
gcloud
gcloud pam grants describe
๋ช
๋ น์ด๋ ํน์ ๊ถํ ๋ถ์ฌ๋ฅผ ๊ฒ์ํฉ๋๋ค.
์๋์ ๋ช ๋ น์ด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
GRANT_ID
: ์ธ๋ถ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ ๊ถํ ๋ถ์ฌ์ ID์ ๋๋ค.ENTITLEMENT_ID
: ๊ถํ ๋ถ์ฌ๊ฐ ์ํ ์ฌ์ฉ ๊ถํ์ ID์ ๋๋ค.RESOURCE_TYPE
: ์ ํ์ฌํญ. ์ฌ์ฉ ๊ถํ์ด ์ํ ๋ฆฌ์์ค ์ ํ์ ๋๋ค.organization
,folder
๋๋project
๊ฐ์ ์ฌ์ฉํฉ๋๋ค.RESOURCE_ID
:RESOURCE_TYPE
์ ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ์ฉ ๊ถํ์ ๊ด๋ฆฌํ๋ ค๋ Google Cloudํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ID์ ๋๋ค. ํ๋ก์ ํธ ID๋my-project
์ ๊ฐ์ ์์ซ์ ๋ฌธ์์ด์ ๋๋ค. ํด๋ ๋ฐ ์กฐ์ง ID๋123456789012
์ ๊ฐ์ ์ซ์์ ๋๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
Linux, macOS ๋๋ Cloud Shell
gcloud pam grants describe \ GRANT_ID \ --entitlement=ENTITLEMENT_ID \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows(PowerShell)
gcloud pam grants describe ` GRANT_ID ` --entitlement=ENTITLEMENT_ID ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows(cmd.exe)
gcloud pam grants describe ^ GRANT_ID ^ --entitlement=ENTITLEMENT_ID ^ --location=global ^ --RESOURCE_TYPE=RESOURCE_ID
๋ค์๊ณผ ๋น์ทํ ์๋ต์ด ํ์๋ฉ๋๋ค.
createTime: '2024-03-25T23:10:16.952789492Z' justification: unstructuredJustification: Adding missing file for service to work properly name: projects/my-project/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID privilegedAccess: gcpIamAccess: resource: //cloudresourcemanager.googleapis.com/projects/my-project resourceType: cloudresourcemanager.googleapis.com/Project roleBindings: - role: roles/storage.admin requestedDuration: 1800s requester: alex@example.com state: EXPIRED timeline: events: - eventTime: '2024-03-25T23:10:17.155612987Z' requested: expireTime: '2024-03-26T23:10:17.155612987Z' - eventTime: '2024-03-26T23:10:17.279777370Z' expired: {} updateTime: '2024-03-25T23:10:17.273416257Z'
REST
Privileged Access Manager API์ getGrant
๋ฉ์๋๋ ํน์ ๊ถํ ๋ถ์ฌ๋ฅผ ๊ฒ์ํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
SCOPE
: ์ฌ์ฉ ๊ถํ์ด ์๋ ์กฐ์ง, ํด๋, ํ๋ก์ ํธ๋ก,organizations/ORGANIZATION_ID
,folders/FOLDER_ID
๋๋projects/PROJECT_ID
ํ์์ ๋๋ค. ํ๋ก์ ํธ ID๋my-project
์ ๊ฐ์ ์์ซ์ ๋ฌธ์์ด์ ๋๋ค. ํด๋ ๋ฐ ์กฐ์ง ID๋123456789012
์ ๊ฐ์ ์ซ์์ ๋๋ค.ENTITLEMENT_ID
: ๊ถํ ๋ถ์ฌ๊ฐ ์ํ ์ฌ์ฉ ๊ถํ์ ID์ ๋๋ค.GRANT_ID
: ์ธ๋ถ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ ๊ถํ ๋ถ์ฌ์ ID์ ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://privilegedaccessmanager.googleapis.com/v1/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID", "createTime": "2024-03-06T03:08:49.330577625Z", "updateTime": "2024-03-06T03:08:49.625874598Z", "requester": "alex@example.com", "requestedDuration": "3600s", "justification": { "unstructuredJustification": "Emergency service for outage" }, "state": "APPROVAL_AWAITED", "timeline": { "events": [ { "eventTime": "2024-03-06T03:08:49.462765846Z", "requested": { "expireTime": "2024-03-07T03:08:49.462765846Z" } } ] }, "privilegedAccess": { "gcpIamAccess": { "resourceType": "cloudresourcemanager.googleapis.com/Project", "resource": "//cloudresourcemanager.googleapis.com/projects/my-project", "roleBindings": [ { "role": "roles/storage.admin" } ] } }, "additionalEmailRecipients": [ "bola@google.com" ] }