์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ ๊ฐœ์š”

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฃผ ๊ตฌ์„ฑ์›์˜ ์ดˆ๊ณผ ๊ถŒํ•œ์„ ์‹๋ณ„ํ•˜๊ณ  ์‚ญ์ œํ•˜์—ฌ ๋ฆฌ์†Œ์Šค์˜ ๋ณด์•ˆ ๊ตฌ์„ฑ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ ๊ฐœ์š”

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์€ IAM ์ถ”์ฒœ์ž์— ์˜ํ•ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. IAM ์ถ”์ฒœ์ž๋Š” ์ถ”์ฒœ์ž์—์„œ ์ œ๊ณตํ•˜๋Š” ์ถ”์ฒœ์ž ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๊ฐ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์€ ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ์ดˆ๊ณผ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์—ญํ• ์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋Œ€์ฒดํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๊ทœ๋ชจ์— ๋งž๊ฒŒ ์ด๋Ÿฌํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์€ ์ฃผ ๊ตฌ์„ฑ์›์— ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌํ•˜์—ฌ ์ตœ์†Œ ๊ถŒํ•œ์˜ ์›์น™์„ ์ ์šฉํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

IAM ์ถ”์ฒœ์ž๋Š” ์ •์ฑ… ํ†ต๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๊ณผ ๊ถŒํ•œ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ •์ฑ… ํ†ต๊ณ„๋Š” ์ฃผ ๊ตฌ์„ฑ์›์˜ ๊ถŒํ•œ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ML ๊ธฐ๋ฐ˜ ๋ฐœ๊ฒฌ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค.

์ผ๋ถ€ ๊ถŒ์žฅ์‚ฌํ•ญ์€ ์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„์™€๋„ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ†ต๊ณ„๋Š” ํ”„๋กœ์ ํŠธ์˜ ์„œ๋น„์Šค ๊ณ„์ •์ด ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ ์„œ๋น„์Šค ๊ณ„์ •์„ ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„ ์ƒ์„ฑ ๋ฐฉ๋ฒ•์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ •์ฑ… ํ†ต๊ณ„ ์ƒ์„ฑ ๋ฐฉ๋ฒ•

์ •์ฑ… ํ†ต๊ณ„๋Š” ์ฃผ ๊ตฌ์„ฑ์›์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฃผ ๊ตฌ์„ฑ์› ์—ญํ• ์˜ ๊ถŒํ•œ์„ ๊ฐ•์กฐ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

IAM ์ถ”์ฒœ์ž๋Š” ์ฃผ ๊ตฌ์„ฑ์›์˜ ์ด ๊ถŒํ•œ ์ˆ˜๋ฅผ ์ฃผ ๊ตฌ์„ฑ์›์ด ์ตœ๊ทผ 90์ผ ๋™์•ˆ ์‚ฌ์šฉํ•œ ๊ถŒํ•œ๊ณผ ๋น„๊ตํ•˜์—ฌ ์ •์ฑ… ํ†ต๊ณ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์—ญํ• ์ด ๋ถ€์—ฌ๋œ ์ง€ 90์ผ์ด ์ง€๋‚˜์ง€ ์•Š์€ ๊ฒฝ์šฐ IAM ์ถ”์ฒœ์ž๋Š” ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ์—ญํ• ์ด ๋ถ€์—ฌ๋œ ์‹œ์ ๋ถ€ํ„ฐ ์ฃผ ๊ตฌ์„ฑ์› ๊ถŒํ•œ ์‚ฌ์šฉ ํ˜„ํ™ฉ์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ฃผ ๊ตฌ์„ฑ์›์ด ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ์ง์ ‘: ๊ถŒํ•œ์ด ํ•„์š”ํ•œ API ํ˜ธ์ถœ

    ์˜ˆ๋ฅผ ๋“ค์–ด IAM REST API์˜ roles.list ๋ฉ”์„œ๋“œ์—๋Š” iam.roles.list ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. roles.list ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ iam.roles.list ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฆฌ์†Œ์Šค์˜ testIamPermissions ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ…Œ์ŠคํŠธ ์ค‘์ธ ๋ชจ๋“  ๊ถŒํ•œ์ด ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ๊ฐ„์ ‘: Google Cloud ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜์—ฌ Google Cloud๋ฆฌ์†Œ์Šค์™€ ์—ฐ๋™

    ์˜ˆ๋ฅผ ๋“ค์–ด Google Cloud ์ฝ˜์†”์—์„œ ๋ณ€๊ฒฝํ•˜๋Š” ์„ค์ •์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ถŒํ•œ์ด ํ•„์š”ํ•œ Compute Engine ๊ฐ€์ƒ ๋จธ์‹  (VM) ์ธ์Šคํ„ด์Šค๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Google Cloud ์ฝ˜์†”์—๋Š” ๊ธฐ์กด ์„ค์ •๋„ ํ‘œ์‹œ๋˜์–ด compute.instances.get ๊ถŒํ•œ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

    ๋”ฐ๋ผ์„œ Google Cloud ์ฝ˜์†”์—์„œ VM ์ธ์Šคํ„ด์Šค๋ฅผ ํŽธ์ง‘ํ•  ๋•Œ compute.instances.get ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฃผ ๊ตฌ์„ฑ์›์ด ์‚ฌ์šฉํ•œ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด IAM ์ถ”์ฒœ์ž๋Š” ์ง‘๊ณ„๋œ IAM ์•ก์„ธ์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. IAM ์ถ”์ฒœ์ž๊ฐ€ ์ด๋Ÿฌํ•œ ํ†ต๊ณ„์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ ๋ฐ์ดํ„ฐ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋˜ํ•œ IAM ์ถ”์ฒœ์ž๋Š” ์ฃผ ๊ตฌ์„ฑ์›์ด ์ตœ๊ทผ์— ํ•ด๋‹น ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋”๋ผ๋„ ๋จธ์‹ ๋Ÿฌ๋‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ ๊ตฌ์„ฑ์›์˜ ํ˜„์žฌ ์—ญํ• ์—์„œ ํ–ฅํ›„ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ํŽ˜์ด์ง€์˜ ์ •์ฑ… ํ†ต๊ณ„์šฉ ๋จธ์‹ ๋Ÿฌ๋‹์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ๋ถ€์—ฌ๋œ ๋ชจ๋“  IAM ์—ญํ• ์— ๋Œ€ํ•ด ์ •์ฑ… ํ†ต๊ณ„๊ฐ€ ์ƒ์„ฑ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์—ญํ• ์— ์ •์ฑ… ํ†ต๊ณ„๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ๋Š” ์ด์œ ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ํŽ˜์ด์ง€์˜ ๊ฐ€์šฉ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ •์ฑ… ํ†ต๊ณ„ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์€ ํ”„๋กœ์ ํŠธ, ํด๋”, ์กฐ์ง์˜ ์ •์ฑ… ํ†ต๊ณ„ ๊ด€๋ฆฌ ๋˜๋Š” Cloud Storage ๋ฒ„ํ‚ท์˜ ์ •์ฑ… ํ†ต๊ณ„ ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ •์ฑ… ํ†ต๊ณ„์šฉ ๋จธ์‹ ๋Ÿฌ๋‹

์ผ๋ถ€ ๊ฒฝ์šฐ์— ์ฃผ ๊ตฌ์„ฑ์›์€ ํ˜„์žฌ ์—ญํ• ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ ์ตœ๊ทผ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํŠน์ • ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IAM ์ถ”์ฒœ์ž๋Š” ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ •์ฑ… ํ†ต๊ณ„๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋จธ์‹ ๋Ÿฌ๋‹(ML) ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์€ ์—ฌ๋Ÿฌ ์‹ ํ˜ธ ์„ธํŠธ์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

  • ๊ด€์ฐฐ๋œ ๋‚ด์—ญ์˜ ๊ณตํ†ต ์ถœํ˜„ ํŒจํ„ด: ์ด์ „์— ์‚ฌ์šฉ์ž๊ฐ€ A, B, C ๊ถŒํ•œ์„ ์‚ฌ์šฉํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ A, B, C๊ฐ€ ์–ด๋–ค ์‹์œผ๋กœ๋“  ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ํžŒํŠธ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ Google Cloud์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•˜๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ML ๋ชจ๋ธ์ด ์ด ํŒจํ„ด์„ ์ž์ฃผ ๊ด€์ฐฐํ•˜๊ฒŒ ๋˜๋ฉด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ A์™€ B ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ชจ๋ธ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ C ๊ถŒํ•œ ๋˜ํ•œ ํ•„์š”ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

  • ์—ญํ•  ์ •์˜์— ์ธ์ฝ”๋”ฉ๋œ ๋„๋ฉ”์ธ ์ง€์‹: IAM์€ ์„œ๋น„์Šค๋ณ„๋กœ ์ˆ˜๋ฐฑ ๊ฐ€์ง€์˜ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์— ์ผ๋ จ์˜ ๊ถŒํ•œ์ด ํฌํ•จ๋œ๋‹ค๋Š” ๊ฒƒ์€ ์ด๋Ÿฌํ•œ ๊ถŒํ•œ๋“ค์ด ํ•จ๊ป˜ ๋ถ€์—ฌ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฐ•๋ ฅํ•œ ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์‹ ํ˜ธ ์™ธ์—๋„ ๋ชจ๋ธ์€ ๋‹จ์–ด ์ž„๋ฒ ๋”ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ถŒํ•œ์ด ์–ด๋–ป๊ฒŒ ์˜๋ฏธ์ƒ ์œ ์‚ฌํ•œ์ง€ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์˜๋ฏธ์ƒ ๋น„์Šทํ•œ ๊ถŒํ•œ์€ ์ž„๋ฒ ๋”ฉ ํ›„์— ์„œ๋กœ '๊ฐ€๊นŒ์›Œ'์ง€๊ณ  ํ•จ๊ป˜ ๋ถ€์—ฌ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด bigquery.datasets.get๊ณผ bigquery.tables.list๋Š” ์ž„๋ฒ ๋”ฉ ํ›„ ์„œ๋กœ ๋งค์šฐ ๊ฐ€๊นŒ์›Œ์ง‘๋‹ˆ๋‹ค.

IAM ์ถ”์ฒœ์ž ๋จธ์‹ ๋Ÿฌ๋‹ ํŒŒ์ดํ”„๋ผ์ธ์— ์‚ฌ์šฉ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” k-์ต๋ช…์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด๋Š” ์ต๋ช…ํ™”๋œ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ๊ฐœ์ธ์„ ๋‹ค์‹œ ์‹๋ณ„ํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ต๋ช…์„ฑ ์ˆ˜์ค€์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ๊ถŒํ•œ ์‚ฌ์šฉ ํŒจํ„ด๊ณผ ๊ด€๋ จ๋œ ์‚ฌ์šฉ์ž ID ๋“ฑ์˜ ๊ฐœ์ธ ์‹๋ณ„ ์ •๋ณด(PII)๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Google Cloud์ „์ฒด์— ์ž์ฃผ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ ํŒจํ„ด์„ ๋ชจ๋‘ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์ „์—ญ ๋ชจ๋ธ์€ ์ด ์ต๋ช…ํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•™์Šต๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด์ง€ ์•Š๊ณ  ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ•™์Šต์‹œํ‚ค๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ํ”„๋กœ์„ธ์Šค์ธ ์ œํœด ํ•™์Šต์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ์ง๋งˆ๋‹ค ์ „์—ญ ๋ชจ๋ธ์„ ๋งž์ถค์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ ์ƒ์„ฑ ๋ฐฉ๋ฒ•

์ •์ฑ… ํ†ต๊ณ„์—์„œ ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ์—ญํ• ์˜ ๋ชจ๋“  ๊ถŒํ•œ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ IAM ์ถ”์ฒœ์ž๋Š” ์—ญํ• ์„ ํ‰๊ฐ€ํ•˜์—ฌ ์—ญํ• ์„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋˜๋Š” ๋” ์ ํ•ฉํ•œ ๋‹ค๋ฅธ ์—ญํ• ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—ญํ• ์„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์œผ๋ฉด IAM ์ถ”์ฒœ์ž๋Š” ์—ญํ• ์„ ์ทจ์†Œํ•˜๋Š” ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋” ์ ํ•ฉํ•œ ๋‹ค๋ฅธ ์—ญํ• ์ด ์žˆ์œผ๋ฉด IAM ์ถ”์ฒœ์ž๋Š” ์—ญํ• ์„ ์ถ”์ฒœ๋œ ์—ญํ• ๋กœ ๋Œ€์ฒดํ•  ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ์ปค์Šคํ…€ ์—ญํ• , ๊ธฐ์กด ์ปค์Šคํ…€ ์—ญํ•  ๋˜๋Š” ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ•  1๊ฐœ ์ด์ƒ์ด ์—ญํ• ๋กœ ์ถ”์ฒœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ์—์ด์ „ํŠธ์— ๋Œ€ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์˜ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๋ฉด ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์€ ์ฃผ ๊ตฌ์„ฑ์›์˜ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋†’์ด๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ์ œ์•ˆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์€ IAM ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ์ œ์–ด ๋ชฉ๋ก(ACL) ๋ฐ Kubernetes ์—ญํ•  ๊ธฐ๋ฐ˜ ์•ก์„ธ์Šค ์ œ์–ด(RBAC)์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•  ๋•Œ ํŠนํžˆ ์ฃผ์˜ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ์•ก์„ธ์Šค ์ œ์–ด๊ฐ€ ํ—ˆ์šฉ ์ •์ฑ…๊ณผ ์–ด๋–ค ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ๋ถ€์—ฌ๋œ ๋ชจ๋“  IAM ์—ญํ• ์— ๋Œ€ํ•œ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ญํ• ์— ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์ด ์—†์„ ์ˆ˜ ์žˆ๋Š” ์ด์œ ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ํŽ˜์ด์ง€์˜ ๊ฐ€์šฉ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ด€์ฐฐ ๊ธฐ๊ฐ„

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ ๊ด€์ฐฐ ๊ธฐ๊ฐ„์€ ๊ถŒ์žฅ์‚ฌํ•ญ ๊ธฐ์ค€์ด ๋˜๋Š” ๊ถŒํ•œ ์‚ฌ์šฉ ๋ฐ์ดํ„ฐ์˜ ์ผ์ˆ˜์ž…๋‹ˆ๋‹ค.

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์˜ ์ตœ๋Œ€ ๊ด€์ฐฐ ๊ธฐ๊ฐ„์€ 90์ผ์ž…๋‹ˆ๋‹ค. ์ฆ‰, IAM ์ถ”์ฒœ์ž๋Š” ์ตœ๊ทผ 90์ผ ๋™์•ˆ์˜ ๊ถŒํ•œ ์‚ฌ์šฉ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ IAM ์ถ”์ฒœ์ž๋Š” ํŠน์ • ์ผ์ˆ˜์˜ ๊ถŒํ•œ ์‚ฌ์šฉ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์–ด์•ผ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ƒ์„ฑํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๊ฐ„์„ ์ตœ์†Œ ๊ด€์ฐฐ ๊ธฐ๊ฐ„์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ์†Œ ๊ด€์ฐฐ ๊ธฐ๊ฐ„์€ 90์ผ์ด์ง€๋งŒ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์˜ ๊ฒฝ์šฐ ์ˆ˜๋™์œผ๋กœ 30์ผ ๋˜๋Š” 60์ผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ ์ƒ์„ฑ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ตœ์†Œ ๊ด€์ฐฐ ๊ธฐ๊ฐ„์„ 90์ผ ๋ฏธ๋งŒ์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๊ถŒ์žฅ์‚ฌํ•ญ์ด ๋” ๋นจ๋ฆฌ ํ‘œ์‹œ๋˜์ง€๋งŒ ๊ถŒ์žฅ์‚ฌํ•ญ์˜ ์ •ํ™•๋„๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์†Œ ๊ด€์ฐฐ ๊ธฐ๊ฐ„๋ณด๋‹ค ์˜ค๋ž˜๋˜์—ˆ์ง€๋งŒ ์—ญํ• ์ด ์ƒ์„ฑ๋œ์ง€ 90์ผ ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ ๊ด€์ฐฐ ๊ธฐ๊ฐ„์€ ์—ญํ• ์ด ๋ถ€์—ฌ๋œ ์ดํ›„์˜ ๊ธฐ๊ฐ„์ž…๋‹ˆ๋‹ค.

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์˜ ์ƒˆ ์ปค์Šคํ…€ ์—ญํ• 

IAM ์ถ”์ฒœ์ž๊ฐ€ ํŠน์ • ์—ญํ• ์˜ ๋Œ€์ฒด ์—ญํ• ์„ ์ œ์•ˆํ•  ๋•Œ๋Š” ์–ธ์ œ๋‚˜ ์ฃผ ๊ตฌ์„ฑ์›์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋” ์ ํ•ฉํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ๊ธฐ์กด ์ปค์Šคํ…€ ์—ญํ•  ๋˜๋Š” ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ•  1๊ฐœ ์ด์ƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

IAM ์ถ”์ฒœ์ž๊ฐ€ ์กฐ์ง์—์„œ ๊ธฐ์กด์˜ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ•  ๋˜๋Š” ์ปค์Šคํ…€ ์—ญํ• ์— ๋งคํ•‘๋˜์ง€ ์•Š๋Š” ์ผ๋ฐ˜์ ์ธ ๊ถŒํ•œ ์‚ฌ์šฉ ํŒจํ„ด์„ ์‹๋ณ„ํ•˜๋ฉด ์ƒˆ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€ ์ปค์Šคํ…€ ์—ญํ• ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ์ปค์Šคํ…€ ์—ญํ• ์—๋Š” ๊ถŒ์žฅ ๊ถŒํ•œ๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜์—ฌ ์ปค์Šคํ…€ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์†Œ ๊ถŒํ•œ ์›์น™์„ ์ตœ๋Œ€ํ•œ ์—„๊ฒฉํžˆ ์ ์šฉํ•˜๋ ค๋ฉด ์ƒˆ ์ปค์Šคํ…€ ์—ญํ• ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. IAM ์ถ”์ฒœ์ž๋Š” ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์—์„œ ์ปค์Šคํ…€ ์—ญํ• ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ปค์Šคํ…€ ์—ญํ• ์„ ์œ ์ง€ํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž๋™์œผ๋กœ ์œ ์ง€๊ด€๋ฆฌ๋˜๋Š” ์—ญํ• ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ์„ ํƒํ•˜์„ธ์š”. Google Cloud ๋Š” ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์—ญํ• ์„ ์ •๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ๋ฐ›์œผ๋ ค๋ฉด ๊ถŒํ•œ ๋ณ€๊ฒฝ ๋กœ๊ทธ์— ๋Œ€ํ•œ ๋‰ด์Šค ํ”ผ๋“œ๋ฅผ ๊ตฌ๋…ํ•˜์„ธ์š”. ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ์„ ํƒํ•˜๋ฉด ์ฃผ ๊ตฌ์„ฑ์›์ด ์ ์–ด๋„ ๋ช‡ ๊ฐ€์ง€ ๊ถŒํ•œ์€ ๊ณ„์† ๋ณด์œ ํ•˜๊ฒŒ ๋˜๊ณ  ์•„์ง๊นŒ์ง€ ์‚ฌ์šฉํ•œ ์ ์ด ์—†์—ˆ๋˜ ๋‹ค์ˆ˜์˜ ๊ถŒํ•œ์„ ๋ณด์œ ํ•˜๊ฒŒ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

IAM ์ถ”์ฒœ์ž๋Š” ํ”„๋กœ์ ํŠธ์— ๋ถ€์—ฌ๋œ ์—ญํ• ์—๋งŒ ์ƒˆ ์ปค์Šคํ…€ ์—ญํ• ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ํด๋” ๋˜๋Š” ์กฐ์ง๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค์— ๋ถ€์—ฌ๋˜๋Š” ์—ญํ• ์—๋Š” ์ƒˆ๋กœ์šด ์ปค์Šคํ…€ ์—ญํ• ์ด ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ IAM ์ถ”์ฒœ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์ƒˆ ์ปค์Šคํ…€ ์—ญํ• ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์กฐ์ง์— ์ด๋ฏธ 100๊ฐœ ์ด์ƒ์˜ ์ปค์Šคํ…€ ์—ญํ• ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ์— ์ด๋ฏธ 25๊ฐœ ์ด์ƒ์˜ ์ปค์Šคํ…€ ์—ญํ• ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

IAM ์ถ”์ฒœ์ž์—์„œ๋Š” ์ƒˆ ์ปค์Šคํ…€ ์—ญํ• ์„ ๊ฐ ํ”„๋กœ์ ํŠธ๋‹น ํ•˜๋ฃจ 5๊ฐœ ์ดํ•˜, ์ „์ฒด ์กฐ์ง์—๋Š” 15๊ฐœ ์ดํ•˜๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„ ์ƒ์„ฑ ๋ฐฉ๋ฒ•

์ธก๋ฉด ์ด๋™์€ ํ•œ ํ”„๋กœ์ ํŠธ์˜ ์„œ๋น„์Šค ๊ณ„์ •์— ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ ์„œ๋น„์Šค ๊ณ„์ •์„ ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ์ ํŠธ A์—์„œ ๋งŒ๋“  ์„œ๋น„์Šค ๊ณ„์ •์ด ํ”„๋กœ์ ํŠธ B์˜ ์„œ๋น„์Šค ๊ณ„์ •์„ ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ถŒํ•œ์€ ์ฃผ ๊ตฌ์„ฑ์›์— ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ฆฌ์†Œ์Šค ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ํ”„๋กœ์ ํŠธ ๊ฐ„์˜ ์ผ๋ จ์˜ ๊ฐ€์žฅ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฃผ ๊ตฌ์„ฑ์›์ด ํ”„๋กœ์ ํŠธ A์˜ ์„œ๋น„์Šค ๊ณ„์ •์„ ๊ฐ€์žฅํ•˜๋Š” ๊ฒฝ์šฐ ์ด ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ B์˜ ์„œ๋น„์Šค ๊ณ„์ •์„ ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ B์˜ ์„œ๋น„์Šค ๊ณ„์ •์— ์กฐ์ง ๋‚ด ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ ๋‹ค๋ฅธ ์„œ๋น„์Šค ๊ณ„์ •์„ ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉด ์ฃผ ๊ตฌ์„ฑ์›์ด ๊ณ„์†ํ•ด์„œ ์„œ๋น„์Šค ๊ณ„์ • ๊ฐ€์žฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๊ฐ„์— ์ด๋™ํ•˜๋ฉฐ ๊ถŒํ•œ์„ ๊ณ„์† ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IAM ์ถ”์ฒœ์ž๋Š” ๋‹ค์Œ ๊ธฐ์ค€์— ๋งž๋Š” ์—ญํ• ์„ ์‹๋ณ„ํ•˜์—ฌ ์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • ์—ญํ• ์ด ๋ถ€์—ฌ๋œ ์ฃผ ๊ตฌ์„ฑ์›์€ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ ์ƒ์„ฑ๋˜์ง€ ์•Š์€ ์„œ๋น„์Šค ๊ณ„์ •์ž…๋‹ˆ๋‹ค.
  • ์ด ์—ญํ• ์—๋Š” ์ฃผ ๊ตฌ์„ฑ์›์ด ์„œ๋น„์Šค ๊ณ„์ •์„ ๊ฐ€์žฅํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋‹ค์Œ ๊ถŒํ•œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    • iam.serviceAccounts.actAs
    • iam.serviceAccounts.getAccessToken
    • iam.serviceAccounts.getOpenIdToken
    • iam.serviceAccounts.implicitDelegation
    • iam.serviceAccounts.signBlob
    • iam.serviceAccounts.signJwt

์—ญํ• ์ด ์ด๋Ÿฌํ•œ ๊ธฐ์ค€์— ๋ถ€ํ•ฉํ•˜๋ฉด IAM ์ถ”์ฒœ์ž๊ฐ€ ์—ญํ• ์˜ ์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ํ†ต๊ณ„์—๋Š” ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค ๊ณ„์ •๊ณผ ์ง€๋‚œ 90์ผ ๋™์•ˆ ๊ฐ€์žฅ ๊ถŒํ•œ์„ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€ ๋“ฑ ์„œ๋น„์Šค ๊ณ„์ •์˜ ๊ฐ€์žฅ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

IAM ์ถ”์ฒœ์ž๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ƒ์„ฑํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ •์ด ๊ฐ€์žฅ ๊ถŒํ•œ์„ ์‚ฌ์šฉ ์ค‘์ธ ๊ฒฝ์šฐ IAM ์ถ”์ฒœ์ž๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ญ์ œ๋ฅผ ์ œ์•ˆํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ถŒํ•œ์„ ์‚ญ์ œํ•˜๋„๋ก ์ œ์•ˆํ•˜๋Š” ๊ฒฝ์šฐ IAM ์ถ”์ฒœ์ž๊ฐ€ ์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„๋ฅผ ํ•ด๋‹น ๊ถŒ์žฅ์‚ฌํ•ญ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐ•๋ ฅํ•œ ๊ฐ€์žฅ ๊ถŒํ•œ์„ ๋ณด์œ ํ•œ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„ ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ€์šฉ์„ฑ

์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ๋ถ€์—ฌ๋œ ๋ชจ๋“  ์—ญํ• ์— ๋Œ€ํ•ด ์ •์ฑ… ํ†ต๊ณ„, ์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„, ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์ด ์ƒ์„ฑ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์„น์…˜์„ ์ฝ๊ณ  ์ •์ฑ… ํ†ต๊ณ„, ์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„, ๊ถŒ์žฅ์‚ฌํ•ญ์ด ์ƒ์„ฑ๋˜๋Š” ์—ญํ• ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

์ •์ฑ… ํ†ต๊ณ„ ๊ฐ€์šฉ์„ฑ

IAM ์ถ”์ฒœ์ž๊ฐ€ ์—ญํ• ์— ๋Œ€ํ•œ ์ •์ฑ… ํ†ต๊ณ„๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋Š” IAM ํ—ˆ์šฉ ์ •์ฑ…์€ ๋‹ค์Œ ๋ฆฌ์†Œ์Šค ์ค‘ ํ•˜๋‚˜์— ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • Cloud Storage ๋ฒ„ํ‚ท
    • BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ
    • ํ”„๋กœ์ ํŠธ
    • ํด๋”
    • ์กฐ์ง

    IAM ์ถ”์ฒœ์ž๋Š” ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค์— ๋ถ€์—ฌ๋œ ์—ญํ• ์— ๋Œ€ํ•ด์„œ๋งŒ ์ •์ฑ… ํ†ต๊ณ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋Š” ์—ญํ•  ๊ฒฐํ•ฉ์— ์กฐ๊ฑด์ด ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. IAM ์ถ”์ฒœ์ž๋Š” ์กฐ๊ฑด๋ถ€ ์—ญํ•  ๋ฐ”์ธ๋”ฉ์˜ ์ •์ฑ… ํ†ต๊ณ„๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์—ญํ• ์ด ๋ถ€์—ฌ๋œ ์ฃผ ๊ตฌ์„ฑ์›์€ ๋‹ค์Œ ์ฃผ ๊ตฌ์„ฑ์› ์œ ํ˜• ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ์‚ฌ์šฉ์ž
    • ์„œ๋น„์Šค ๊ณ„์ •
    • ๊ทธ๋ฃน
    • allUsers
    • allAuthenticatedUsers
    • Cloud Storage ๋‹จ์ถ•๊ฐ’
    • BigQuery ํŠน๋ณ„ ๊ทธ๋ฃน ๋ฉค๋ฒ„์‹ญ
    • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œํœด ID ์œ ํ˜• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

      • ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ํ’€์˜ ๋ชจ๋“  ID
      • ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ํ’€์˜ ๋‹จ์ผ ID
      • ์ง์› ID ํ’€์˜ ๋ชจ๋“  ID
      • ์ง์› ID ํ’€์˜ ๋‹จ์ผ ID
      • ํŠน์ • Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  Google Kubernetes Engine ํฌ๋“œ

    ๊ฐ ์ฃผ ๊ตฌ์„ฑ์› ์œ ํ˜•์˜ ์‹๋ณ„์ž ํ˜•์‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฃผ ๊ตฌ์„ฑ์› ์‹๋ณ„์ž๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

IAM ์ถ”์ฒœ์ž๊ฐ€ ์ƒˆ๋กœ ๋ถ€์—ฌ๋œ ์—ญํ• ์— ๋Œ€ํ•œ ์ •์ฑ… ํ†ต๊ณ„๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์ตœ๋Œ€ 10์ผ์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ์ •์ฑ… ํ†ต๊ณ„๋Š” ์ตœ๊ทผ ๊ถŒํ•œ ์‚ฌ์šฉ์— ๋”ฐ๋ผ ๋งค์ผ ์ƒˆ๋กœ๊ณ ์นจ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ •์ฑ… ํ†ต๊ณ„์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‹ค์ œ ์‚ฌ์šฉ๋Ÿ‰๋ณด๋‹ค ์ตœ๋Œ€ 2์ผ ์ง€์—ฐ๋ฉ๋‹ˆ๋‹ค.

์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„ ๊ฐ€์šฉ์„ฑ

์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„๋Š” ๋‹ค์Œ ๋ฆฌ์†Œ์Šค์— ๋ถ€์—ฌ๋œ ์—ญํ• ์— ๋Œ€ํ•ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • ์กฐ์ง
  • ํด๋”
  • ํ”„๋กœ์ ํŠธ
  • ์„œ๋น„์Šค ๊ณ„์ •

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ ๊ฐ€์šฉ์„ฑ

IAM ์ถ”์ฒœ์ž๊ฐ€ ์—ญํ• ์— ๋Œ€ํ•œ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์—ญํ• ์— ์—ฐ๊ฒฐ๋œ ์ •์ฑ… ํ†ต๊ณ„๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ •์ฑ…์€ ๊ถŒ์žฅ์‚ฌํ•ญ์˜ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์—ญํ• ์ด ๋ถ€์—ฌ๋œ ์ดํ›„ ์ตœ์†Œ ๊ด€์ฐฐ ๊ธฐ๊ฐ„๋ณด๋‹ค ๊ธธ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด IAM ์ถ”์ฒœ์ž๋Š” ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ œ๊ณตํ•  ๋งŒํผ ์ถฉ๋ถ„ํ•œ ์‚ฌ์šฉ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ์†Œ ๊ด€์ฐฐ ๊ธฐ๊ฐ„์€ 90์ผ์ด์ง€๋งŒ ์ˆ˜๋™์œผ๋กœ 30์ผ ๋˜๋Š” 60์ผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ ์ƒ์„ฑ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • ์—ญํ• ์ด ๋ถ€์—ฌ๋œ ์ฃผ ๊ตฌ์„ฑ์›์ด ์„œ๋น„์Šค ์—์ด์ „ํŠธ๋ฉด ์—ญํ• ์€ ์†Œ์œ ์ž, ํŽธ์ง‘์ž ๋˜๋Š” ๋ทฐ์–ด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. IAM ์ถ”์ฒœ์ž๋Š” ๋‹ค๋ฅธ ์—ญํ• ์ด ์žˆ๋Š” ์„œ๋น„์Šค ์—์ด์ „ํŠธ์˜ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„œ๋น„์Šค ์—์ด์ „ํŠธ์˜ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์—ญํ• ์ด ๋„ˆ๋ฌด ์ตœ๊ทผ์— ๋ถ€์—ฌ๋˜์—ˆ๊ฑฐ๋‚˜ ํ†ต๊ณ„๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ Google Cloud ์ฝ˜์†”์˜ ๋ถ„์„๋œ ๊ถŒํ•œ ์—ด์— ์•„์ด์ฝ˜์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„์ด ์ถฉ๋ถ„ํžˆ ๊ฒฝ๊ณผํ•˜๊ณ  ์—ญํ• ์— ์—ฐ๊ฒฐ๋œ ํ†ต๊ณ„๊ฐ€ ์žˆ๋”๋ผ๋„ IAM ์ถ”์ฒœ์ž๊ฐ€ ์—ญํ• ์— ๋Œ€ํ•œ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ˜„์žฌ ์—ญํ• ๋ณด๋‹ค ์ ์ ˆํ•œ ์‚ฌ์ „ ์ •์˜๋œ IAM ์—ญํ• ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ์ด๋ฏธ ๊ถŒํ•œ์ด ์ตœ์†Œํ™”๋œ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์ด ๋ถ€์—ฌ๋˜์—ˆ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ๋ณด๋‹ค ๊ถŒํ•œ์ด ์ ์€ ๊ฒฝ์šฐ IAM ์ถ”์ฒœ์ž๋Š” ๋‹ค๋ฅธ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ์ถ”์ฒœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    ์ฃผ ๊ตฌ์„ฑ์›์„ ์œ„ํ•œ ์ปค์Šคํ…€ ์—ญํ• ์„ ๋งŒ๋“ค์–ด ์ฃผ ๊ตฌ์„ฑ์›์˜ ๊ถŒํ•œ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฃผ ๊ตฌ์„ฑ์›์€ ์„œ๋น„์Šค ์—์ด์ „ํŠธ์ด๋ฉฐ ์—ญํ• ์€ ๊ธฐ๋ณธ ์—ญํ• ์ด ์•„๋‹™๋‹ˆ๋‹ค. IAM ์ถ”์ฒœ์ž๋Š” ๊ธฐ๋ณธ ์—ญํ• (์†Œ์œ ์ž, ํŽธ์ง‘์ž, ๋ทฐ์–ด)์ด ์žˆ๋Š” ์„œ๋น„์Šค ์—์ด์ „ํŠธ์˜ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ๋งŒ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„œ๋น„์Šค ์—์ด์ „ํŠธ์˜ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  • ํ”„๋กœ์ ํŠธ์˜ ์†Œ์œ ์ž ๊ธฐ๋ณธ ์—ญํ• ์„ ๊ฐ€์ง„ ๋‹ค๋ฅธ ์ฃผ ๊ตฌ์„ฑ์›์ด ์—†์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ์ฃผ ๊ตฌ์„ฑ์› ์ตœ์†Œ ํ•œ ๋ช… ์ด์ƒ์—๊ฒŒ ์†Œ์œ ์ž ์—ญํ• (roles/owner)์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ญํ• ์ด ์žˆ๋Š” ์ฃผ ๊ตฌ์„ฑ์›์ด ๋‹จ ํ•œ ๋ช…์ด๋ฉด IAM ์ถ”์ฒœ์ž๋Š” ์—ญํ• ์„ ์ทจ์†Œํ•˜๊ฑฐ๋‚˜ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฒฝ์šฐGoogle Cloud ์ฝ˜์†”์˜ ๋ถ„์„๋œ ๊ถŒํ•œ ์—ด์— ์ฃผ ๊ตฌ์„ฑ์›์˜ ๊ถŒํ•œ ์‚ฌ์šฉ๋Ÿ‰์ด ํ‘œ์‹œ๋˜์ง€๋งŒ ๊ถŒ์žฅ์‚ฌํ•ญ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์•„์ด์ฝ˜์€ ์—†์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์€ ์ตœ๊ทผ ๊ถŒํ•œ ์‚ฌ์šฉ์— ๋”ฐ๋ผ ๋งค์ผ ์ƒˆ๋กœ๊ณ ์นจ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‹ค์ œ ์‚ฌ์šฉ๋Ÿ‰๋ณด๋‹ค ์ตœ๋Œ€ 2์ผ๊นŒ์ง€ ์ง€์—ฐ๋ฉ๋‹ˆ๋‹ค.

์šฐ์„ ์ˆœ์œ„ ๋ฐ ์‹ฌ๊ฐ๋„

๊ถŒ์žฅ์‚ฌํ•ญ ์šฐ์„ ์ˆœ์œ„ ๋ฐ ํ†ต๊ณ„ ์‹ฌ๊ฐ๋„๋Š” ๊ถŒ์žฅ์‚ฌํ•ญ ๋˜๋Š” ํ†ต๊ณ„์˜ ๊ธด๊ธ‰์„ฑ์„ ์ดํ•ดํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ ์šฐ์„ ์ˆœ์œ„

๊ถŒ์žฅ์‚ฌํ•ญ์€ ์ธ์‹๋˜๋Š” ๊ธด๊ธ‰ํ•œ ์ˆ˜์ค€์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„ ์ˆ˜์ค€์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ์ˆ˜์ค€ ๋ฒ”์œ„๋Š” P1(๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„)์—์„œ P4(๊ฐ€์žฅ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„)๊นŒ์ง€์ž…๋‹ˆ๋‹ค.

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์˜ ์šฐ์„ ์ˆœ์œ„๋Š” ๊ถŒ์žฅ์‚ฌํ•ญ์˜ ์—ญํ• ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๊ถŒ์žฅ์‚ฌํ•ญ ์„ธ๋ถ€์ •๋ณด ์šฐ์„ ์ˆœ์œ„ ์„ค๋ช…
Cloud Storage ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ ๊ณต๊ฐœ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์—ญํ• ์˜ ๊ถŒ์žฅ์‚ฌํ•ญ P1 ๊ณต๊ฐœ์ ์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํ‚ท์—๋Š” ์ธํ„ฐ๋„ท์ƒ์˜ ๋ˆ„๊ตฌ๋‚˜ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฐœ ์•ก์„ธ์Šค๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๋Œ€ํ•œ ๊ณต๊ฐœ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์—ญํ• ์˜ ๊ถŒ์žฅ์‚ฌํ•ญ P1 ๊ณต๊ฐœ์ ์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ์—๋Š” ์ธํ„ฐ๋„ท์ƒ์˜ ๋ˆ„๊ตฌ๋‚˜ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฐœ ์•ก์„ธ์Šค๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ, ํด๋” ๋˜๋Š” ์กฐ์ง์— ๋ถ€์—ฌ๋˜๋Š” ๊ธฐ๋ณธ ์—ญํ• (์†Œ์œ ์ž, ํŽธ์ง‘์ž, ๋ทฐ์–ด)์— ๋Œ€ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ P2 ๊ธฐ๋ณธ ์—ญํ• ์€ ๊ถŒํ•œ์ด ๋†’์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ์—ญํ• ์— ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๋ฉด ์ดˆ๊ณผ ๊ถŒํ•œ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ณต๊ฐœ ์•ก์„ธ์Šค ๋˜๋Š” ๊ธฐ๋ณธ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜์ง€ ์•Š๋Š” ๊ถŒ์žฅ์‚ฌํ•ญ P4 ์ด๋Ÿฌํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ํ†ตํ•ด ๊ณผ๋„ํ•œ ๊ถŒํ•œ์„ ์ค„์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ณต๊ฐœ ์•ก์„ธ์Šค ๋˜๋Š” ๋†’์€ ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ธฐ๋ณธ ์—ญํ• ์€ ์‚ญ์ œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค.

ํ†ต๊ณ„ ์‹ฌ๊ฐ๋„

ํ†ต๊ณ„์—๋Š” ์ธ์‹๋˜๋Š” ๊ธด๊ธ‰ํ•œ ์ˆ˜์ค€์— ๋”ฐ๋ผ ์‹ฌ๊ฐ๋„ ์ˆ˜์ค€์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์‹ฌ๊ฐ๋„ ์ˆ˜์ค€์€ LOW, MEDIUM, HIGH, CRITICAL์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •์ฑ… ํ†ต๊ณ„์˜ ์‹ฌ๊ฐ๋„๋Š” ํ†ต๊ณ„์˜ ์—ญํ• ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

ํ†ต๊ณ„ ์„ธ๋ถ€์ •๋ณด ์‹ฌ๊ฐ๋„ ์„ค๋ช…
Cloud Storage ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ ๊ณต๊ฐœ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์—ญํ• ์— ๋Œ€ํ•œ ํ†ต๊ณ„ CRITICAL ๊ณต๊ฐœ์ ์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํ‚ท์—๋Š” ์ธํ„ฐ๋„ท์ƒ์˜ ๋ˆ„๊ตฌ๋‚˜ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฐœ ์•ก์„ธ์Šค๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๊ณต๊ฐœ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์—ญํ• ์— ๋Œ€ํ•œ ํ†ต๊ณ„ CRITICAL ๊ณต๊ฐœ์ ์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ์—๋Š” ์ธํ„ฐ๋„ท์ƒ์˜ ๋ˆ„๊ตฌ๋‚˜ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฐœ ์•ก์„ธ์Šค๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ, ํด๋” ๋˜๋Š” ์กฐ์ง์— ๋ถ€์—ฌ๋œ ๊ธฐ๋ณธ ์—ญํ• (์†Œ์œ ์ž, ํŽธ์ง‘์ž, ๋ทฐ์–ด)์— ๋Œ€ํ•œ ํ†ต๊ณ„ HIGH ๊ธฐ๋ณธ ์—ญํ• ์€ ๊ถŒํ•œ์ด ๋†’์œผ๋ฉฐ, ์ด๋Ÿฌํ•œ ์—ญํ• ์— ๋Œ€ํ•œ ํ†ต๊ณ„๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉด ๊ณผ๋„ํ•œ ๊ถŒํ•œ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ณต๊ฐœ ์•ก์„ธ์Šค ๋˜๋Š” ๊ธฐ๋ณธ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜์ง€ ์•Š๋Š” ํ†ต๊ณ„ LOW ์ด๋Ÿฌํ•œ ํ†ต๊ณ„๋Š” ๊ณผ๋„ํ•œ ๊ถŒํ•œ์„ ๊ฐ•์กฐํ•˜์ง€๋งŒ ๊ณต๊ฐœ ์•ก์„ธ์Šค ๋˜๋Š” ๊ถŒํ•œ์ด ๋†’์€ ๊ธฐ๋ณธ ์—ญํ• ์€ ํฌํ•จ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„์˜ ์‹ฌ๊ฐ๋„๋Š” LOW์ž…๋‹ˆ๋‹ค.

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ ์ ์šฉ ๋ฐฉ๋ฒ•

IAM ์ถ”์ฒœ์ž๋Š” ์ž๋™์œผ๋กœ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์‚ฌ์šฉ์ž๊ฐ€ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜๊ณ  ์ ์šฉํ•˜๊ธฐ ๋˜๋Š” ๋‹ซ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๊ฒ€ํ†  ๋ฐ ์ ์šฉํ•˜๊ณ  ๋‹ซ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ ๊ฐ€์ด๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ์‚ฌ ๋กœ๊น…

๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ๋‹ซ์œผ๋ฉด IAM ์ถ”์ฒœ์ž๊ฐ€ ๋กœ๊ทธ ํ•ญ๋ชฉ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ถ”์ฒœ ๊ธฐ๋ก์—์„œ ํ•ญ๋ชฉ์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ Google Cloud ๊ฐ์‚ฌ ๋กœ๊ทธ์—์„œ ํ•ญ๋ชฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ ํ•˜์œ„์œ ํ˜•

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์€ ๊ถŒ์žฅ ์ž‘์—…์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ํ•˜์œ„์œ ํ˜•์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. gcloud CLI ๋˜๋Š” REST API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ํ•˜์œ„์œ ํ˜•์œผ๋กœ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์œ„์œ ํ˜• ์„ค๋ช…
REMOVE_ROLE ์ฃผ ๊ตฌ์„ฑ์›์˜ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€, ํด๋” ์ˆ˜์ค€, ์กฐ์ง ์ˆ˜์ค€ ์—ญํ• ์„ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
REMOVE_ROLE_BIGQUERY_DATASET ์ฃผ ๊ตฌ์„ฑ์›์˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ ์ˆ˜์ค€ ์—ญํ• ์„ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
REMOVE_ROLE_STORAGE_BUCKET ์ฃผ ๊ตฌ์„ฑ์›์˜ ๋ฒ„ํ‚ท ์ˆ˜์ค€ ์—ญํ• ์„ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
REPLACE_ROLE ์ฃผ ๊ตฌ์„ฑ์›์˜ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€, ํด๋” ์ˆ˜์ค€ ๋˜๋Š” ์กฐ์ง ์ˆ˜์ค€ ์—ญํ• ์„ ๊ถŒํ•œ์ด ๋” ๋‚ฎ์€ ์—ญํ• ๋กœ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๊ถŒ์žฅ๋˜๋Š” ๋Œ€์ฒด ์—ญํ• ์€ ๊ธฐ์กด ์ปค์Šคํ…€ ์—ญํ•  ๋˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
REPLACE_ROLE_CUSTOMIZABLE ์ฃผ ๊ตฌ์„ฑ์›์˜ ์—ญํ• ์„ ํ˜„์žฌ ์—ญํ• ๋ณด๋‹ค ๊ถŒํ•œ์ด ๋” ๋‚ฎ์€ ์ƒˆ ์ปค์Šคํ…€ ์—ญํ• ๋กœ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
REPLACE_ROLE_BIGQUERY_DATASET ์ฃผ ๊ตฌ์„ฑ์›์˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ ์ˆ˜์ค€ ์—ญํ• ์„ ๊ถŒํ•œ์ด ๋” ๋‚ฎ์€ ์—ญํ• ๋กœ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๊ถŒ์žฅ๋˜๋Š” ๋Œ€์ฒด ์—ญํ• ์€ ๊ธฐ์กด ์ปค์Šคํ…€ ์—ญํ•  ๋˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
REPLACE_ROLE_STORAGE_BUCKET ์ฃผ ๊ตฌ์„ฑ์›์˜ ๋ฒ„ํ‚ท ์ˆ˜์ค€ ์—ญํ• ์„ ๊ถŒํ•œ์ด ๋” ๋‚ฎ์€ ์—ญํ• ๋กœ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๊ถŒ์žฅ๋˜๋Š” ๋Œ€์ฒด ์—ญํ• ์€ ๊ธฐ์กด ์ปค์Šคํ…€ ์—ญํ•  ๋˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
SERVICE_AGENT_WITH_DEFAULT_ROLE ์„œ๋น„์Šค ๊ณ„์ •์˜ ์†Œ์œ ์ž, ํŽธ์ง‘์ž ๋˜๋Š” ๋ทฐ์–ด ์—ญํ• ์„, ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ƒ์„ฑ ์‹œ์— ์ž๋™์œผ๋กœ ๋ถ€์—ฌ๋œ ์—ญํ• ๋กœ ๊ต์ฒดํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„œ๋น„์Šค ์—์ด์ „ํŠธ์˜ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
SERVICE_AGENT_WITHOUT_DEFAULT_ROLE ์„œ๋น„์Šค ์—์ด์ „ํŠธ์˜ ์†Œ์œ ์ž, ํŽธ์ง‘์ž ๋˜๋Š” ๋ทฐ์–ด ์—ญํ• ์„ ๊ถŒํ•œ์ด ๋‚ฎ์€ ์—ญํ• ๋กœ ๊ต์ฒดํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„œ๋น„์Šค ์—์ด์ „ํŠธ์˜ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์„œ๋น„์Šค ์—์ด์ „ํŠธ์˜ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ

์„œ๋น„์Šค ์—์ด์ „ํŠธ์˜ ๊ฒฝ์šฐ, IAM ์ถ”์ฒœ์ž๋Š” ๊ธฐ๋ณธ ์—ญํ• (์†Œ์œ ์ž, ํŽธ์ง‘์ž, ๋ทฐ์–ด)์— ๋Œ€ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์—์ด์ „ํŠธ์˜ ๊ถŒ์žฅ์‚ฌํ•ญ์€ ๋‘ ๊ฐ€์ง€ ๊ถŒ์žฅ์‚ฌํ•ญ ํ•˜์œ„์œ ํ˜•์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

SERVICE_AGENT_WITH_DEFAULT_ROLE

์ผ๋ถ€ ์„œ๋น„์Šค ์—์ด์ „ํŠธ์—๋Š” ์ƒ์„ฑ ์‹œ Google Cloud ์„œ๋น„์Šค๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ์„œ๋น„์Šค ์—์ด์ „ํŠธ ์—ญํ• ์ด ์ž๋™์œผ๋กœ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. ์ด ์—ญํ• ์„ ๊ธฐ๋ณธ ์—ญํ• (์†Œ์œ ์ž, ํŽธ์ง‘์ž, ๋ทฐ์–ด)๋กœ ๋ฐ”๊พธ๋ฉด ์ถ”์ฒœ์ž๋Š” ์„œ๋น„์Šค ์—์ด์ „ํŠธ ์—ญํ• ์ด ๊ธฐ๋ณธ ์—ญํ• ์— ์—†๋Š” ๊ถŒํ•œ์„ ๊ฐ€์ง„ ๊ฒฝ์šฐ์—๋„ ์›๋ž˜ ์„œ๋น„์Šค ์—์ด์ „ํŠธ ์—ญํ• ์„ ๋ณต์›ํ•˜์—ฌ ์ดˆ๊ณผ ๊ถŒํ•œ์„ ์‚ญ์ œํ•˜๋„๋ก ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ถ”์ฒœ์—๋Š” SERVICE_AGENT_WITH_DEFAULT_ROLE ํ•˜์œ„ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋“  Google Cloud ์„œ๋น„์Šค๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋ฉด์„œ ์ดˆ๊ณผ ๊ถŒํ•œ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ญ์ œํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

SERVICE_AGENT_WITH_DEFAULT_ROLE ๊ถŒ์žฅ์‚ฌํ•ญ์€ ํ˜„์žฌ ์—ญํ• ์— ์—†๋Š” ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์—ญํ• ์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ ์œ ํ˜•์ž…๋‹ˆ๋‹ค.

SERVICE_AGENT_WITHOUT_DEFAULT_ROLE

์ƒ์„ฑ ์‹œ ์„œ๋น„์Šค ์—์ด์ „ํŠธ์— ์—ญํ• ์ด ์ž๋™์œผ๋กœ ๋ถ€์—ฌ๋˜์ง€ ์•Š์œผ๋ฉด ์„œ๋น„์Šค ์—์ด์ „ํŠธ์˜ ๊ถŒ์žฅ์‚ฌํ•ญ์€ ์„œ๋น„์Šค ์—์ด์ „ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ถŒํ•œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ๋งŒ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์—๋Š” SERVICE_AGENT_WITHOUT_DEFAULT_ROLE ํ•˜์œ„์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Security Command Center์˜ ์—ญํ•  ์ถ”์ฒœ

ํ”„๋ฆฌ๋ฏธ์—„ ๋˜๋Š” Enterprise ๋“ฑ๊ธ‰์˜ Security Command Center๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Security Command Center์—์„œ ์—ญํ•  ์ถ”์ฒœ์˜ ์ผ๋ถ€ ํ•˜์œ„์œ ํ˜•์„ ๋ฐœ๊ฒฌ ํ•ญ๋ชฉ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ•˜์œ„ ์œ ํ˜•์€ ๊ฐ์ง€๊ธฐ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ถŒ์žฅ์‚ฌํ•ญ ํ•˜์œ„์œ ํ˜• ๋ฐœ๊ฒฌ ํ•ญ๋ชฉ ์นดํ…Œ๊ณ ๋ฆฌ
REMOVE_ROLE Unused IAM role
REPLACE_ROLE IAM role has excessive permissions
SERVICE_AGENT_WITH_DEFAULT_ROLE Service agent role replaced with basic role
SERVICE_AGENT_WITHOUT_DEFAULT_ROLE Service agent granted basic role

Security Command Center์—์„œ ์—ญํ•  ์ถ”์ฒœ์„ ๋ณด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Security Command Center ๋ฌธ์„œ์˜ IAM ์ถ”์ฒœ์ž๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ€๊ฒฉ ์ฑ…์ •

๊ธฐ๋ณธ ์—ญํ• ์˜ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€, ํด๋” ์ˆ˜์ค€, ์กฐ์ง ์ˆ˜์ค€ ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์€ ๊ณ„์† ๋ฌด๋ฃŒ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ณ ๊ธ‰ IAM ์ถ”์ฒœ์ž ๊ธฐ๋Šฅ์€ Security Command Center ํ”„๋ฆฌ๋ฏธ์—„ ๋˜๋Š” Enterprise ๋“ฑ๊ธ‰์˜ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€ ๋˜๋Š” ์กฐ์ง ์ˆ˜์ค€ ํ™œ์„ฑํ™”์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ์ด ์•„๋‹Œ ์—ญํ• ์— ๋Œ€ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ
  • ์กฐ์ง, ํด๋”, ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹Œ ๋ฆฌ์†Œ์Šค์— ๋ถ€์—ฌ๋œ ์—ญํ• ์— ๋Œ€ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ(์˜ˆ: Cloud Storage ๋ฒ„ํ‚ท์— ๋ถ€์—ฌ๋œ ์—ญํ• ์— ๋Œ€ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ)
  • ์ปค์Šคํ…€ ์—ญํ• ์„ ์ œ์•ˆํ•˜๋Š” ๊ถŒ์žฅ์‚ฌํ•ญ
  • ์ •์ฑ… ํ†ต๊ณ„
  • ์ธก๋ฉด ์ด๋™ ํ†ต๊ณ„

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฒฐ์ œ ๊ด€๋ จ ๋ฌธ์˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ ์˜ˆ์‹œ

๋‹ค์Œ ์˜ˆ์‹œ๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ ์œ ํ˜•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๊ธฐ์กด ์—ญํ•  ์ทจ์†Œ

์‚ฌ์šฉ์ž my-user@example.com์—๊ฒŒ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๋ธŒ๋ผ์šฐ์ € ์—ญํ• ์ด ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ์—ญํ• ์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ์ ํŠธ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” 6๊ฐœ์˜ ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๋‚œ 90์ผ ๋™์•ˆ my-user@example.com์€ ์–ด๋–ค ๋ฆฌ์†Œ์Šค๋„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ IAM ์ถ”์ฒœ์ž๋Š” my-user@example.com์—์„œ ๋ธŒ๋ผ์šฐ์ € ์—ญํ• ์„ ์ทจ์†Œํ•  ๊ฒƒ์„ ์ œ์•ˆํ•˜๋Š” ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

gcloud

{
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/86c14538-dcfd-4326-afe5-ee8ac921e06a"
    }
  ],
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "remove",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/browser"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project"
          }
        ]
      }
    ],
    "overview": {
      "member": "user:my-user@example.com",
      "removedRole": "roles/browser",
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012"
    }
  },
  "description": "This role has not been used during the observation window.",
  "etag": "\"9fc3241da8bfab51\"",
  "lastRefreshTime": "2022-05-20T07:00:00Z",
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fe512038-5455-49g1-8f9c-752e31c8c154",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 6
      }
    }
  },
  "priority": "P4",
  "recommenderSubtype": "REMOVE_ROLE",
  "stateInfo": {
    "state": "ACTIVE"
  }
}

REST

{
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fe512038-5455-49g1-8f9c-752e31c8c154",
  "description": "This role has not been used during the observation window.",
  "lastRefreshTime": "2022-05-20T07:00:00Z",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 6
      }
    }
  },
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "remove",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/browser"
            }
          }
        ]
      }
    ],
    "overview": {
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
      "member": "user:my-user@example.com",
      "removedRole": "roles/browser"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  },
  "etag": "\"9fc3241da8bfab51\"",
  "recommenderSubtype": "REMOVE_ROLE",
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/86c14538-dcfd-4326-afe5-ee8ac921e06a"
    }
  ],
  "priority": "P4"
}

๊ธฐ์กด ์—ญํ•  ๋ฐ”๊พธ๊ธฐ

์„œ๋น„์Šค ๊ณ„์ •์— ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ํŽธ์ง‘์ž ์—ญํ• (roles/editor)์ด ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ณธ ์—ญํ• ์—๋Š” 3,000๊ฐœ๊ฐ€ ๋„˜๋Š” ๊ถŒํ•œ์ด ํฌํ•จ๋˜๋ฉฐ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๋‚œ 90์ผ ๋™์•ˆ ์„œ๋น„์Šค ๊ณ„์ •์€ ์ด๋Ÿฌํ•œ ๊ถŒํ•œ ์ค‘ ์ผ๋ถ€๋งŒ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ IAM ์ถ”์ฒœ์ž๋Š” ํŽธ์ง‘์ž ์—ญํ• ์„ ์ทจ์†Œํ•˜๊ณ  2๊ฐœ์˜ ๋‹ค๋ฅธ ์—ญํ•  ์กฐํ•ฉ์œผ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์ˆ˜์ฒœ ๊ฐœ์˜ ์ดˆ๊ณผ ๊ถŒํ•œ์„ ์‚ญ์ œํ•  ๊ฒƒ์„ ์ œ์•ˆํ•˜๋Š” ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

gcloud

{
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/3d4ef3d6-bdf0-4330-975d-c65cb929c44d"
    }
  ],
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "path": "/iamPolicy/bindings/*/members/-",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/iam.serviceAccountUser"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "value": "user:my-user@example.com"
          },
          {
            "action": "add",
            "path": "/iamPolicy/bindings/*/members/-",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/storage.objectAdmin"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "value": "user:my-user@example.com"
          },
          {
            "action": "remove",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/editor"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project"
          }
        ]
      }
    ],
    "overview": {
      "addedRoles": [
        "roles/iam.serviceAccountUser",
        "roles/storage.objectAdmin"
      ],
      "member": "user:my-user@example.com",
      "minimumObservationPeriodInDays": "0",
      "removedRole": "roles/editor",
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012"
    }
  },
  "description": "Replace the current role with smaller predefined roles to cover the permissions needed.",
  "etag": "\"0da9a354c2a83d96\"",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/4637db3d-dba5-45eb-95ac-b4ee4b4cd14e",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 2998
      }
    }
  },
  "priority": "P2",
  "recommenderSubtype": "REPLACE_ROLE",
  "stateInfo": {
    "state": "ACTIVE"
  }
}

REST

{
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/4637db3d-dba5-45eb-95ac-b4ee4b4cd14e",
  "description": "Replace the current role with smaller predefined roles to cover the permissions needed.",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 2998
      }
    }
  },
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/-",
            "value": "user:my-user@example.com",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/iam.serviceAccountOwner"
            }
          },
          {
            "action": "add",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/-",
            "value": "user:my-user@example.com",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/storage.objectAdmin"
            }
          },
          {
            "action": "remove",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/editor"
            }
          }
        ]
      }
    ],
    "overview": {
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
      "member": "user:my-user@example.com",
      "removedRole": "roles/editor",
      "addedRoles": [
        "roles/iam.serviceAccountUser",
        "roles/storage.objectAdmin"
      ],
      "minimumObservationPeriodInDays": "0"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  },
  "etag": "\"0da9a354c2a83d96\"",
  "recommenderSubtype": "REPLACE_ROLE",
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/3d4ef3d6-bdf0-4330-975d-c65cb929c44d"
    }
  ],
  "priority": "P2"
}

๋งž์ถค ์—ญํ•  ๋งŒ๋“ค๊ธฐ

์‚ฌ์šฉ์ž my-user@example.com์—๊ฒŒ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ Cloud Trace ๊ด€๋ฆฌ์ž ์—ญํ• (roles/cloudtrace.admin)์ด ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์—ญํ• ์—๋Š” 10๊ฐœ๊ฐ€ ๋„˜๋Š” ๊ถŒํ•œ์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ ์ •์ฑ… ํ†ต๊ณ„๋Š” ์ง€๋‚œ 90์ผ ๋™์•ˆ my-user@example.com์ด ์ด๋Ÿฌํ•œ ๊ถŒํ•œ ์ค‘ 4๊ฐœ๋งŒ ์‚ฌ์šฉํ–ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ IAM ์ถ”์ฒœ์ž๋Š” my-user@example.com์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•œ ๊ถŒํ•œ๋งŒ ํฌํ•จํ•˜๋Š” ์ปค์Šคํ…€ ์—ญํ• ์„ ๋งŒ๋“ค๋„๋ก ์ œ์•ˆํ•˜๋Š” ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

gcloud

REPLACE_ROLE_CUSTOMIZABLE ํ•˜์œ„์œ ํ˜•์€ IAM ์ถ”์ฒœ์ž๊ฐ€ ์‚ฌ์šฉ๋œ ๊ถŒํ•œ์œผ๋กœ ์ปค์Šคํ…€ ์—ญํ• ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋œ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๋ ค๋ฉด ๊ด€๋ จ ์ •์ฑ… ํ†ต๊ณ„๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

{
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/2799dc04-b12e-4cf6-86aa-d81907d31f58"
    }
  ],
  "associatedResourceNames": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "path": "/iamPolicy/bindings/*/members/-",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.user"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "value": "user:my-user@example.com"
          },
          {
            "action": "remove",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.admin"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project"
          }
        ]
      }
    ],
    "overview": {
      "minimumObservationPeriodInDays": "0"
    }
  },
  "description": "Replace the current role with a smaller role to cover the permissions needed.",
  "etag": "\"c7f57a4725d32d66\"",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/ba1fc977-fddd-3856-a829-f69649ae8075",
  "originalContent": {},
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {},
      "revokedIamPermissionsCount": 1
    }
  },
  "priority": "P4",
  "recommenderSubtype": "REPLACE_ROLE_CUSTOMIZABLE",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ]
}

REST

REPLACE_ROLE_CUSTOMIZABLE ํ•˜์œ„์œ ํ˜•์€ IAM ์ถ”์ฒœ์ž๊ฐ€ ์‚ฌ์šฉ๋œ ๊ถŒํ•œ์œผ๋กœ ์ปค์Šคํ…€ ์—ญํ• ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋œ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๋ ค๋ฉด ๊ด€๋ จ ์ •์ฑ… ํ†ต๊ณ„๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

{
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/ba1fc977-fddd-3856-a829-f69649ae8075",
  "description": "Replace the current role with a smaller role to cover the permissions needed.",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 1
      }
    }
  },
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/-",
            "value": "user:my-user@example.com",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.user"
            }
          },
          {
            "action": "remove",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.admin"
            }
          }
        ]
      }
    ],
    "overview": {
      "minimumObservationPeriodInDays": "0"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  },
  "etag": "\"c7f57a4725d32d66\"",
  "recommenderSubtype": "REPLACE_ROLE_CUSTOMIZABLE",
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/2799dc04-b12e-4cf6-86aa-d81907d31f58"
    }
  ],
  "priority": "P4"
}

์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์€ ๊ธฐ์กด ์—ญํ• ์„ Cloud Trace ์‚ฌ์šฉ์ž ์—ญํ• (roles/cloudtrace.user)๋กœ ๋Œ€์ฒดํ•˜๋Š” ๋‹ค๋ฅธ ์˜ต์…˜๋„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ด ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์—๋Š” Cloud Trace ๊ด€๋ฆฌ์ž ์—ญํ• ๋ณด๋‹ค ์•ฝ๊ฐ„ ์ ์€ ๊ถŒํ•œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋จธ์‹ ๋Ÿฌ๋‹์—์„œ ์ œ์•ˆํ•˜๋Š” ๊ถŒํ•œ์œผ๋กœ ์—ญํ•  ๋Œ€์ฒด

์„œ๋น„์Šค ๊ณ„์ •์— ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ํŽธ์ง‘์ž ์—ญํ• (roles/editor)์ด ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ณธ ์—ญํ• ์—๋Š” 3,000๊ฐœ๊ฐ€ ๋„˜๋Š” ๊ถŒํ•œ์ด ํฌํ•จ๋˜๋ฉฐ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ •์ฑ… ํ†ต๊ณ„์—์„œ๋Š” ์„œ๋น„์Šค ๊ณ„์ •์ด ์ง€๋‚œ 90์ผ ๋™์•ˆ 10๊ฐœ ๋ฏธ๋งŒ์˜ ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์ •์ฑ… ํ†ต๊ณ„๋Š” ํ–ฅํ›„ ์„œ๋น„์Šค ๊ณ„์ •์— ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ถŒํ•œ์„ ๊ฐ•์กฐํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. IAM ์ถ”์ฒœ์ž๋Š” ๋จธ์‹ ๋Ÿฌ๋‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ์‹๋ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

IAM ์ถ”์ฒœ์ž๋Š” ํŽธ์ง‘์ž ์—ญํ• ์„ ์ทจ์†Œํ•˜๊ณ  ์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด ๊ด€๋ฆฌ์ž ์—ญํ• (roles/storage.objectAdmin)๋กœ ๋Œ€์ฒดํ•  ๊ฒƒ์„ ์ œ์•ˆํ•˜๋Š” ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด ๊ด€๋ฆฌ์ž ์—ญํ• ์€ Cloud Storage ๋ฒ„ํ‚ท์—์„œ ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ „์ฒด ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ณ€๊ฒฝํ•˜๋ฉด ์ˆ˜์ฒœ ๊ฐœ์˜ ์ดˆ๊ณผ ๊ถŒํ•œ์ด ์‚ญ์ œ๋˜์ง€๋งŒ, ์„œ๋น„์Šค ๊ณ„์ •์—์„œ ์‚ฌ์šฉํ•œ ๊ถŒํ•œ ๋ฐ ํ–ฅํ›„ ์„œ๋น„์Šค ๊ณ„์ •์— ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ๋„ ๋ชจ๋‘ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

IAM ์ถ”์ฒœ์ž๋Š” ๊ถŒํ•œ ์‚ฌ์šฉ์ด ์•„๋‹Œ IAM ์ถ”์ฒœ์ž์˜ ๋จธ์‹ ๋Ÿฌ๋‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถ”๊ฐ€๋œ ๊ถŒํ•œ์„ ์‹๋ณ„ํ•˜๋„๋ก ๋จธ์‹ ๋Ÿฌ๋‹ ์•„์ด์ฝ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋จธ์‹ ๋Ÿฌ๋‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ resourcemanager.projects.get ๊ถŒํ•œ์ด ์ถ”์ฒœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

gcloud

๊ถŒํ•œ ์‚ฌ์šฉ์ด ์•„๋‹Œ IAM ์ถ”์ฒœ์ž์˜ ๋จธ์‹ ๋Ÿฌ๋‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถ”๊ฐ€๋œ ๊ถŒํ•œ์€ ๊ถŒ์žฅ์‚ฌํ•ญ ์ž์ฒด์— ๋‚˜์—ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๊ถŒ์žฅ์‚ฌํ•ญ๊ณผ ์—ฐ๊ฒฐ๋œ ์ •์ฑ… ํ†ต๊ณ„์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ML ๊ธฐ๋ฐ˜ ๊ถŒํ•œ์€ ํ†ต๊ณ„์˜ inferredPermissions ํ•„๋“œ์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋จธ์‹ ๋Ÿฌ๋‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ resourcemanager.projects.get ๊ถŒํ•œ์ด ์ถ”์ฒœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

associatedRecommendations:
- recommendation: projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0573b702-96a5-4622-a916-c762e7b0731f
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  currentTotalPermissionsCount: '5069'
  exercisedPermissions:
  - permission: storage.objects.create
  - permission: storage.objects.delete
  - permission: storage.objects.get
  - permission: storage.objects.list
  inferredPermissions:
  - permission: resourcemanager.projects.get
  member: serviceAccount:my-service-account@my-project.iam.gserviceaccount.com
  role: roles/editor
description: 4 of the permissions in this role binding were used in the past 90 days.
etag: '"d3cdec23cc712bd0"'
insightSubtype: PERMISSIONS_USAGE
lastRefreshTime: '2020-07-11T07:00:00Z'
name: projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/0d3ce433-f067-4e78-b6ae-03d7d1f6f040
observationPeriod: 7776000s
stateInfo:
  state: ACTIVE
targetResources:
- //cloudresourcemanager.googleapis.com/projects/123456789012
severity: HIGH

์ •์ฑ… ํ†ต๊ณ„๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

REST

๊ถŒํ•œ ์‚ฌ์šฉ์ด ์•„๋‹Œ IAM ์ถ”์ฒœ์ž์˜ ๋จธ์‹ ๋Ÿฌ๋‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถ”๊ฐ€๋œ ๊ถŒํ•œ์€ ๊ถŒ์žฅ์‚ฌํ•ญ ์ž์ฒด์— ๋‚˜์—ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๊ถŒ์žฅ์‚ฌํ•ญ๊ณผ ์—ฐ๊ฒฐ๋œ ์ •์ฑ… ํ†ต๊ณ„์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ML ๊ธฐ๋ฐ˜ ๊ถŒํ•œ์€ ํ†ต๊ณ„์˜ inferredPermissions ํ•„๋“œ์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋จธ์‹ ๋Ÿฌ๋‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ resourcemanager.projects.get ๊ถŒํ•œ์ด ์ถ”์ฒœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

{
  "name": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/07841f74-02ce-4de8-bbe6-fc4eabb68568",
  "description": "4 of the permissions in this role binding were used in the past 90 days.",
  "content": {
    "role": "roles/editor",
    "member": "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [
      {
        "permission": "storage.objects.create"
      },
      {
        "permission": "storage.objects.delete"
      },
      {
        "permission": "storage.objects.get"
      },
      {
        "permission": "storage.objects.list"
      }
    ],
    "inferredPermissions": [
      {
        "permission": "resourcemanager.projects.get"
      }
    ],
    "currentTotalPermissionsCount": "5069"
  },
  "lastRefreshTime": "2020-07-12T07:00:00Z",
  "observationPeriod": "7776000s",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/b1932220-867d-43d1-bd74-fb95876ab656"
    }
  ],
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "insightSubtype": "PERMISSIONS_USAGE",
  "etag": "\"d3cdec23cc712bd0\"",
  "severity": "HIGH"
}

์ •์ฑ… ํ†ต๊ณ„๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹จ๊ณ„