Privileged Access Manager์—์„œ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ณด๊ธฐ

๊ถŒํ•œ ๋ถ€์—ฌ ์ƒํƒœ์™€ ๊ธฐ๋ก์„ ๋ณด๊ฑฐ๋‚˜ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์ฃผ ๊ตฌ์„ฑ์›์˜ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ถŒํ•œ ๋ถ€์—ฌ ๊ธฐ๋ก์€ ๊ถŒํ•œ ๋ถ€์—ฌ๊ฐ€ ์ข…๋ฃŒ๋œ ํ›„ 30์ผ ๋™์•ˆ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

Privileged Access Manager๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ณ  ๊ถŒํ•œ์„ ์„ค์ •ํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Google Cloud ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ณด๊ธฐ

๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

  1. Privileged Access Manager ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Privileged Access Manager๋กœ ์ด๋™

  2. ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ๋ณด๋ ค๋Š” ์กฐ์ง, ํด๋” ๋˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ๊ถŒํ•œ ๋ถ€์—ฌ ํƒญ๊ณผ ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ ๋ถ€์—ฌ ํƒญ์„ ์ฐจ๋ก€๋กœ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์ด ํƒญ์—๋Š” ๋ชจ๋“  ๊ถŒํ•œ ๋ถ€์—ฌ, ๊ถŒํ•œ ๋ถ€์—ฌ ์š”์ฒญ์ž, ๊ถŒํ•œ ๋ถ€์—ฌ ์ƒํƒœ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ถŒํ•œ ๋ถ€์—ฌ ์ƒํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ์ƒํƒœ ์„ค๋ช…
    ํ™œ์„ฑํ™” ์ค‘ ๊ถŒํ•œ ๋ถ€์—ฌ๊ฐ€ ํ™œ์„ฑํ™”๋˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.
    ํ™œ์„ฑํ™” ์‹คํŒจ 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์—์„œ ๊ฐ์ง€๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  4. ํ…Œ์ด๋ธ”์˜ ์กฐ์‚ฌํ•˜๋ ค๋Š” ์‚ฌ์šฉ ๊ถŒํ•œ๊ณผ ๋™์ผํ•œ ํ–‰์—์„œ ์ถ”๊ฐ€ ์˜ต์…˜์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    • ๊ธฐ๋ก์„ ํฌํ•จํ•˜์—ฌ ๊ถŒํ•œ ๋ถ€์—ฌ ์„ธ๋ถ€์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ์„ธ๋ถ€์ •๋ณด ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒจ๋„์—์„œ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์ทจ์†Œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ํ™œ์„ฑํ™”๋œ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์ทจ์†Œํ•˜๋ ค๋ฉด ๊ถŒํ•œ ๋ถ€์—ฌ ์ทจ์†Œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ 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"
  ]
}