๊ธฐ๋ณธ ์•ก์„ธ์Šค ์ˆ˜์ค€ ๋งŒ๋“ค๊ธฐ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธฐ๋ณธ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์—์„œ ์ปค์Šคํ…€ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“ค๊ณ  ๊ณ ๊ธ‰ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ปค์Šคํ…€ ์•ก์„ธ์Šค ์ˆ˜์ค€ ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ํŽ˜์ด์ง€์—๋Š” ๋ณด๋‹ค ์ง‘์ค‘์ ์ธ ์•ก์„ธ์Šค ์ˆ˜์ค€ ๊ตฌํ˜„์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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

๊ธฐ๋ณธ ์•ก์„ธ์Šค ์ˆ˜์ค€ ๋งŒ๋“ค๊ธฐ

์ฝ˜์†”

๊ธฐ๋ณธ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ Access Context Manager ํŽ˜์ด์ง€๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

    Access Context Manager ํŽ˜์ด์ง€ ์—ด๊ธฐ

  2. ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์กฐ์ง์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. Access Context Manager ํŽ˜์ด์ง€์˜ ๋งจ ์œ„์— ์žˆ๋Š” ์ƒˆ ํ•ญ๋ชฉ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

  4. ์ƒˆ ์•ก์„ธ์Šค ์ˆ˜์ค€ ์ฐฝ์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    1. ์•ก์„ธ์Šค ์ˆ˜์ค€ ์ œ๋ชฉ ํ•„๋“œ์— ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ ์ œ๋ชฉ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ œ๋ชฉ์€ ์ตœ๋Œ€ 50์ž์—ฌ์•ผ ํ•˜๊ณ , ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ์ˆซ์ž, ๋ฌธ์ž, ๋ฐ‘์ค„, ๊ณต๋ฐฑ๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    2. ์กฐ๊ฑด ์„น์…˜์—์„œ ์ถ”๊ฐ€ํ•  ์†์„ฑ ์œ ํ˜•์˜ ์ถ”๊ฐ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ๋‹ค์Œ ํ•ด๋‹น ์†์„ฑ์— ์ ์šฉํ•  ๊ฐ’์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

      ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์˜ ์ „์ฒด ๋ชฉ๋ก์€ ์•ก์„ธ์Šค ์ˆ˜์ค€ ์†์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

      ์˜ˆ๋ฅผ ๋“ค์–ด ์•ก์„ธ์Šค ์ˆ˜์ค€์—์„œ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋Š” ๋„คํŠธ์›Œํฌ ๋‚ด ์œ„์น˜๋ฅผ ๊ณ ๋ คํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋ฉด IP ์„œ๋ธŒ๋„คํŠธ์›Œํฌ ์†์„ฑ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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

      ํ•œ ์•ก์„ธ์Šค ์ˆ˜์ค€ ์กฐ๊ฑด์—๋Š” ๊ฐ ์œ ํ˜•์˜ ์†์„ฑ ํ•˜๋‚˜๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์†์„ฑ์—๋Š” ๊ธฐ๊ธฐ ์ •์ฑ… ์†์„ฑ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ์˜ต์…˜์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

      ์•ก์„ธ์Šค ์ˆ˜์ค€์€ ์‚ฌ์šฉ์ž ID๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์กฐ๊ฑด์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์กฐ๊ฑด์— ID๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด gcloud CLI ๋˜๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    3. ์กฐ๊ฑด ์ถฉ์กฑ ์‹œ ๋ฐ˜ํ™˜ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด์ด ์š”์ฒญ์ด ์ง€์ •๋œ ๋ชจ๋“  ์†์„ฑ์„ ์ถฉ์กฑํ•ด์•ผ ํ•˜๋Š” AND ์—ฐ์‚ฐ (TRUE)์œผ๋กœ ํ‰๊ฐ€๋˜๋Š”์ง€ ๋˜๋Š” ์š”์ฒญ์ด ์ง€์ •๋œ ์†์„ฑ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ์ถฉ์กฑํ•˜์ง€ ์•Š์„ ๋•Œ ์ถฉ์กฑ๋˜๋Š” ๋ถ€์ • (NAND) ์—ฐ์‚ฐ (FALSE)์œผ๋กœ ํ‰๊ฐ€๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

      ์˜ˆ๋ฅผ ๋“ค์–ด ๋„คํŠธ์›Œํฌ์˜ ํŠน์ • IP ์ฃผ์†Œ ๋ฒ”์œ„์—์„œ ์˜ค๋Š” ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•˜๋ ค๋ฉด IP ์„œ๋ธŒ๋„คํŠธ์›Œํฌ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ IP ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•œ ํ›„ ์กฐ๊ฑด์„ FALSE๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    4. (์„ ํƒ์‚ฌํ•ญ) ๋‹ค๋ฅธ ์กฐ๊ฑด ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•˜์—ฌ ์•ก์„ธ์Šค ์ˆ˜์ค€์— ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•œ ํ›„ ์ด์ „ ๋‘ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

      ์˜ˆ๋ฅผ ๋“ค์–ด ๋” ๋„“์€ IP ์ฃผ์†Œ ๋ฒ”์œ„ ๋‚ด์˜ IP ์ฃผ์†Œ ํ•˜์œ„ ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ๊ฑฐ๋ถ€ํ•˜๋ ค๋ฉด ์ƒˆ ์กฐ๊ฑด์„ ๋งŒ๋“ค๊ณ  IP ์„œ๋ธŒ๋„คํŠธ์›Œํฌ ์†์„ฑ์— ํ•˜์œ„ IP ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•œ ํ›„ FALSE๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์กฐ๊ฑด์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

      ๋™์ผํ•œ ์•ก์„ธ์Šค ์ˆ˜์ค€์— ์กฐ๊ฑด์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์ด ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

    5. ์กฐ๊ฑด์„ 2๊ฐœ ์ด์ƒ ๋งŒ๋“  ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ์กฐ๊ฑด ๊ฒฐํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ์ˆ˜์ค€์—์„œ ์š”์ฒญ์ด ํ•˜๋‚˜ ์ด์ƒ์˜ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•ด์•ผ ํ•˜๋Š”์ง€(OR) ๋˜๋Š” ๋ชจ๋“  ์กฐ๊ฑด์„ ์ถฉ์กฑํ•ด์•ผ ํ•˜๋Š”์ง€(AND)๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    6. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

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

gcloud ๋ช…๋ น์ค„ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“ค๋ ค๋ฉด gcloud access-context-manager levels create ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud access-context-manager levels create LEVEL_NAME OPTIONS \
    --policy=POLICY

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • LEVEL_NAME์€ ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ ๊ณ ์œ ํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์€ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ๋ฌธ์ž, ์ˆซ์ž, ๋ฐ‘์ค„๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ์ตœ๋Œ€ 50์ž์ž…๋‹ˆ๋‹ค.

  • OPTIONS๋Š” ๋‹ค์Œ ํ‘œ์˜ ํ•„์ˆ˜ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

    ์˜ต์…˜
    basic-level-spec

    ์•ก์„ธ์Šค ์ˆ˜์ค€์— ์กฐ๊ฑด์„ ํ•˜๋‚˜ ์ด์ƒ ์ง€์ •ํ•˜๋Š” YAML ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

    title

    ์งง์€ ํ˜•์‹์œผ๋กœ ๋œ ์•ก์„ธ์Šค ์ˆ˜์ค€ ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ์ˆ˜์ค€ ์ œ๋ชฉ์€ Google Cloud ์ฝ˜์†”์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    combine-function

    (์„ ํƒ์‚ฌํ•ญ) ์กฐ๊ฑด ์กฐํ•ฉ ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

    ์œ ํšจํ•œ ๊ฐ’: AND, OR

    description

    (์„ ํƒ์‚ฌํ•ญ) ๊ธด ํ˜•์‹์œผ๋กœ ๋œ ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

  • POLICY๋Š” ์กฐ์ง์˜ ์•ก์„ธ์Šค ์ •์ฑ… ID์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ •์ฑ…์ด ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

์„ ํƒ์ ์œผ๋กœ gcloud-wide ํ”Œ๋ž˜๊ทธ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

basic-level-spec YAML ํŒŒ์ผ

gcloud ๋ช…๋ น์ค„ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ์ž‘์„ฑํ•  ๋•Œ basic-level-spec ์˜ต์…˜์— YAML ํŒŒ์ผ์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. YAML ํŒŒ์ผ์€ ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ ์กฐ๊ฑด์„ ํ•˜๋‚˜ ์ด์ƒ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด์—๋Š” ์†์„ฑ์ด ์ตœ์†Œํ•œ ํ•œ ๊ฐœ ์ด์ƒ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด์— ์†์„ฑ์ด 2๊ฐœ ์ด์ƒ ์žˆ์œผ๋ฉด ์กฐ๊ฑด์—์„œ negate ์†์„ฑ์ด true๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ AND ์—ฐ์‚ฐ (๋ชจ๋‘ true์—ฌ์•ผ ํ•จ) ๋˜๋Š” NAND ์—ฐ์‚ฐ (ํ•˜๋‚˜ ์ด์ƒ์ด false์—ฌ์•ผ ํ•จ)์œผ๋กœ ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค.

YAML ํŒŒ์ผ์— ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์˜ ์ „์ฒด ๋ชฉ๋ก์€ ์•ก์„ธ์Šค ์ˆ˜์ค€ ์†์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์•ก์„ธ์Šค ์ˆ˜์ค€ ๋ฐ YAML์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ YAML ์˜ˆ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ช…๋ น์–ด ์˜ˆ

gcloud access-context-manager levels create Device_Trust \
    --basic-level-spec=corpdevspec.yaml \
    --combine-function=AND \
    --description='Access level that conforms to corporate spec.' \
    --title='Device_Trust Extended' \
    --policy=1521580097614100

API

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

์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“ค๋ ค๋ฉด accessLevels.create๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • POLICY๋Š” ์กฐ์ง์˜ ์•ก์„ธ์Šค ์ •์ฑ… ID์ž…๋‹ˆ๋‹ค.

์š”์ฒญ ๋ณธ๋ฌธ

์š”์ฒญ ๋ณธ๋ฌธ์—๋Š” ์ƒˆ ์•ก์„ธ์Šค ์ˆ˜์ค€์— ์›ํ•˜๋Š” ์กฐ๊ฑด์„ ์ง€์ •ํ•˜๋Š” AccessLevel ๋ฆฌ์†Œ์Šค๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ Condition์—๋Š” negate ํ•„๋“œ๊ฐ€ true๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ AND ์—ฐ์‚ฐ (๋ชจ๋‘ true์—ฌ์•ผ ํ•จ) ๋˜๋Š” NAND ์—ฐ์‚ฐ (ํ•˜๋‚˜ ์ด์ƒ์ด false์—ฌ์•ผ ํ•จ)์œผ๋กœ ํ‰๊ฐ€๋˜๋Š” 1๊ฐœ ์ด์ƒ์˜ ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ ํ‰๊ฐ€๋Š” ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์‘๋‹ต ๋ณธ๋ฌธ

ํ˜ธ์ถœ์ด ์„ฑ๊ณตํ•˜๋ฉด ํ˜ธ์ถœ์˜ ์‘๋‹ต ๋ณธ๋ฌธ์— POST ์ž‘์—…์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” Operation ๋ฆฌ์†Œ์Šค๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๊ตฌํ˜„ ์˜ˆ์‹œ

๋‹ค์Œ ์˜ˆ์—์„œ๋Š” ์กฐ์ง์—์„œ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์‹ค์šฉ์ ์ธ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค ์˜ˆ์—์„œ๋Š” ์กฐ์ง์— ์•ก์„ธ์Šค ์ •์ฑ…์ด ์ด๋ฏธ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

ํšŒ์‚ฌ ๋„คํŠธ์›Œํฌ์˜ ์•ก์„ธ์Šค ์ œํ•œ

์ด ์˜ˆ์—์„œ๋Š” ์ง€์ •๋œ IP ์ฃผ์†Œ ๋ฒ”์œ„(์˜ˆ: ํšŒ์‚ฌ ๋„คํŠธ์›Œํฌ ๋‚ด์˜ ์ฃผ์†Œ)์—์„œ๋งŒ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ์•ก์„ธ์Šค ์ˆ˜์ค€ ์กฐ๊ฑด์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์•ก์„ธ์Šค ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋˜๋Š” IP ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•จ์œผ๋กœ์จ ์กฐ์ง ๋‚ด๋ถ€ ๋˜๋Š” ์™ธ๋ถ€ ๊ณต๊ฒฉ์ž์˜ ๋ฐ์ดํ„ฐ ์œ ์ถœ์„ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋‚ด๋ถ€ ๊ฐ์‚ฌ์ธ ๊ทธ๋ฃน์ด sensitive-data๋ผ๋Š” ํ”„๋กœ์ ํŠธ์˜ Cloud Logging ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ์ธ์˜ ๋ชจ๋“  ๊ธฐ๊ธฐ์—๋Š” 203.0.113.0~203.0.113.127 ์‚ฌ์ด์˜ ์„œ๋ธŒ๋„ท IP๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ์ธ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๊ธฐ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ๋Š” ์ด ์„œ๋ธŒ๋„ท์— ํ• ๋‹น๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ ๋ฒ”์œ„(์˜ˆ: 192.168.0.0/16 ๋˜๋Š” 172.16.0.0/12)๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‚ด๋ถ€ IP ์ฃผ์†Œ์—์„œ ๋ณดํ˜ธ๋œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ํ—ˆ์šฉ์—์„œ ์ถ”๊ฐ€ ์ •๋ณด์™€ VPC ์„œ๋น„์Šค ์ œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌํ˜„ ์˜ˆ์‹œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Access Context Manager ํŽ˜์ด์ง€๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

    Access Context Manager ํŽ˜์ด์ง€ ์—ด๊ธฐ

  2. ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์กฐ์ง์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. Access Context Manager ํŽ˜์ด์ง€์˜ ๋งจ ์œ„์— ์žˆ๋Š” ์ƒˆ ํ•ญ๋ชฉ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

  4. ์ƒˆ ์•ก์„ธ์Šค ์ˆ˜์ค€ ์ฐฝ์˜ ์กฐ๊ฑด ์„น์…˜์—์„œ ์†์„ฑ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•œ ํ›„ IP ์„œ๋ธŒ๋„คํŠธ์›Œํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. IP ์„œ๋ธŒ๋„คํŠธ์›Œํฌ ์ƒ์ž์—์„œ ๊ณต๊ฐœ IP ๋˜๋Š” ๋น„๊ณต๊ฐœ IP๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • ๊ณต๊ฐœ IP๋ฅผ ์„ ํƒํ•˜๋ฉด CIDR ๋ธ”๋ก ํ˜•์‹์˜ IPv4 ๋˜๋Š” IPv6 ๋ฒ”์œ„๋ฅผ ํ•˜๋‚˜ ์ด์ƒ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

      ์ด ์˜ˆ์‹œ์—์„œ๋Š” ๊ฐ์‚ฌ ๊ธฐ๊ด€์œผ๋กœ๋งŒ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด IP ์„œ๋ธŒ๋„คํŠธ์›Œํฌ ์ƒ์ž์— 203.0.113.0/25๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    • ๋น„๊ณต๊ฐœ IP๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ VPC ๋„คํŠธ์›Œํฌ ์„ ํƒ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ต์…˜ ๋ชฉ๋ก์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์„ธ ๊ฐ€์ง€ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VPC ๋„คํŠธ์›Œํฌ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      • ์˜ต์…˜ 1:

        1. ์กฐ์ง์˜ VPC ๋„คํŠธ์›Œํฌ ์ฐพ์•„๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•˜๊ณ  VPC ๋„คํŠธ์›Œํฌ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

        2. ์„ ํƒํ•œ VPC ๋„คํŠธ์›Œํฌ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

        3. IP ์„œ๋ธŒ๋„ท ์„ ํƒ์„ ํด๋ฆญํ•˜๊ณ  ์„œ๋ธŒ๋„ท์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

        4. IP ์„œ๋ธŒ๋„ท ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

      • ์˜ต์…˜ 2:

        1. VPC ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ ์ง์ ‘ ์ž…๋ ฅ์„ ์„ ํƒํ•˜๊ณ  VPC ๋„คํŠธ์›Œํฌ๋ฅผ ํ•˜๋‚˜ ์ด์ƒ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

        2. VPC ๋„คํŠธ์›Œํฌ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

        3. IP ์„œ๋ธŒ๋„ท ์„ ํƒ์„ ํด๋ฆญํ•˜๊ณ  ์„œ๋ธŒ๋„ท์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

        4. IP ์„œ๋ธŒ๋„ท ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

      • ์˜ต์…˜ 3:

        1. CSV ํŒŒ์ผ ์—…๋กœ๋“œ(๊ธฐ์กด ๋„คํŠธ์›Œํฌ ๋ฎ์–ด์“ฐ๊ธฐ)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

          CSV ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ์ˆ˜์ค€์— VPC ๋„คํŠธ์›Œํฌ ๋ฐ ์„œ๋ธŒ๋„ท์„ ์ถ”๊ฐ€ํ•˜๋ฉด Access Context Manager๊ฐ€ ์ด์ „์— ์„ ํƒํ•œ VPC ๋„คํŠธ์›Œํฌ ๋ฐ ์„œ๋ธŒ๋„ท์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

        2. ์ฐพ์•„๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•˜๊ณ  CSV ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. CSV ํŒŒ์ผ์—์„œ ๋‹ค์Œ ํ˜•์‹์œผ๋กœ VPC ๋„คํŠธ์›Œํฌ์™€ ์„œ๋ธŒ๋„ท์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

          VPC_NETWORK_NAME_1       | IP_RANGE_1       | IP_RANGE_2       | ...
          VPC_NETWORK_NAME_2       | .                | .                | ...
          .                        | .                | .                | ...
          .                        | .                | .                | ...
          
        3. ๋„คํŠธ์›Œํฌ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

          Access Context Manager๋Š” CSV ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ VPC ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ ๋ฐ IP ์„œ๋ธŒ๋„คํŠธ์›Œํฌ ์ƒ์ž์— ๊ฐ๊ฐ VPC ๋„คํŠธ์›Œํฌ ์ด๋ฆ„๊ณผ ์„œ๋ธŒ๋„ท ์ •๋ณด๋ฅผ ์ฑ„์›๋‹ˆ๋‹ค.

      VPC ๋„คํŠธ์›Œํฌ ์ด๋ฆ„ ๋ฐ ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ ํ˜•์‹์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•ก์„ธ์Šค ์ˆ˜์ค€์—์„œ ๋‚ด๋ถ€ IP ์ฃผ์†Œ ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  6. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. CIDR ๋ธ”๋ก ํ˜•์‹์œผ๋กœ ๋œ IPv4 ๋˜๋Š” IPv6 ๋ฒ”์œ„๋ฅผ ํ•œ ๊ฐœ ์ด์ƒ ํฌํ•จํ•˜๋Š” ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ YAML ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

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

    - ipSubnetworks:
      - 203.0.113.0/25
    

    ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด YAML ํŒŒ์ผ์— ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    - vpcNetworkSources:
      - vpcSubnetwork:
          network: VPC_NETWORK_NAME
          vpcIpSubnetworks:
          - IP_RANGE
    

    VPC_NETWORK_NAME ๋ฐ IP_RANGE๋ฅผ ์•ก์„ธ์Šค ์ˆ˜์ค€์—์„œ ๋‚ด๋ถ€ IP ์ฃผ์†Œ ์‚ฌ์šฉ ์„น์…˜์— ์„ค๋ช…๋œ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  2. ํŒŒ์ผ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ ์ด ํŒŒ์ผ์˜ ์ด๋ฆ„์€ CONDITIONS.yaml์ž…๋‹ˆ๋‹ค.

  3. ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

    ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • NAME์€ ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ ๊ณ ์œ ํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์€ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ๋ฌธ์ž, ์ˆซ์ž, ๋ฐ‘์ค„๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • TITLE์€ ์ธ๊ฐ„์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค. ์ด ์ œ๋ชฉ์€ ์ •์ฑ…์— ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • POLICY๋Š” ์กฐ์ง์˜ ์•ก์„ธ์Šค ์ •์ฑ… ID์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ •์ฑ…์ด ์„ค์ •๋œ ๊ฒฝ์šฐ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ์ถœ๋ ฅ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

  1. CIDR ๋ธ”๋ก ํ˜•์‹์œผ๋กœ ๋œ IPv4 ๋˜๋Š” IPv6 ๋ฒ”์œ„๊ฐ€ ํ•œ ๊ฐœ ์ด์ƒ ํฌํ•จ๋œ AccessLevel ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค๋„๋ก ์š”์ฒญ ๋ณธ๋ฌธ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

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

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "ipSubnetworks": [
             "203.0.113.0/25"
           ]
         }
       ]
     }
    }

    ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • NAME์€ ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ ๊ณ ์œ ํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์€ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ๋ฌธ์ž, ์ˆซ์ž, ๋ฐ‘์ค„๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • TITLE์€ ์ธ๊ฐ„์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค. ์ด ์ œ๋ชฉ์€ ์ •์ฑ…์— ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์š”์ฒญ ๋ณธ๋ฌธ์— ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "vpcNetworkSources": [
            {
              "vpcSubnetwork": {
                "network": VPC_NETWORK_NAME,
                "vpcIpSubnetworks": [
                  IP_RANGE
                ]
              }
            }
           ]
         }
       ]
     }
    }

    VPC_NETWORK_NAME ๋ฐ IP_RANGE๋ฅผ ์•ก์„ธ์Šค ์ˆ˜์ค€์—์„œ ๋‚ด๋ถ€ IP ์ฃผ์†Œ ์‚ฌ์šฉ ์„น์…˜์— ์„ค๋ช…๋œ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  2. accessLevels.create๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • POLICY๋Š” ์กฐ์ง์˜ ์•ก์„ธ์Šค ์ •์ฑ… ID์ž…๋‹ˆ๋‹ค.

๊ธฐ๊ธฐ ์†์„ฑ๋ณ„ ์•ก์„ธ์Šค ์ œํ•œ

์ด ์˜ˆ์‹œ์—์„œ๋Š” ํŠน์ • ์šด์˜์ฒด์ œ (OS) ๋ฒ„์ „๊ณผ ๊ฐ™์€ ์ง€์ •๋œ ์š”๊ตฌ์‚ฌํ•ญ ์ง‘ํ•ฉ์„ ์ถฉ์กฑํ•˜๋Š” ๊ธฐ๊ธฐ์—๋งŒ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๊ธฐ์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์—”๋“œํฌ์ธํŠธ ํ™•์ธ์„ ํ†ตํ•ด Access Context Manager์— ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ ์—ฌ๋ถ€ ๊ฒฐ์ • ์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ค€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํ™”๋ฉด ์ž ๊ธˆ์ด ์‚ฌ์šฉ ์„ค์ •๋จ
  • ์ €์žฅ์†Œ ์•”ํ˜ธํ™”๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋จ
  • ๊ธฐ๊ธฐ๊ฐ€ ์ง€์ •๋œ ์šด์˜์ฒด์ œ ์ข…๋ฅ˜ ๋ฐ ๋ฒ„์ „์„ ์‹คํ–‰ ์ค‘์ž„

์ด ์˜ˆ์—์„œ๋Š” ์กฐ์ง์—์„œ Chrome OS ๋˜๋Š” Windows๊ฐ€ ์„ค์น˜๋œ ๋จธ์‹ ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ์„ ํ•œ์ธต ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์šด์˜์ฒด์ œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ์•ก์„ธ์Šคํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ฐจ๋‹จํ•˜๋Š” ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์œ„ํ—˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ๋ฒ„์ „์˜ OS๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Access Context Manager ํŽ˜์ด์ง€๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

    Access Context Manager ํŽ˜์ด์ง€ ์—ด๊ธฐ

  2. ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์กฐ์ง์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. Access Context Manager ํŽ˜์ด์ง€์˜ ๋งจ ์œ„์— ์žˆ๋Š” ์ƒˆ ํ•ญ๋ชฉ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

  4. ์ƒˆ ์•ก์„ธ์Šค ์ˆ˜์ค€ ์ฐฝ์˜ ์กฐ๊ฑด ์„น์…˜์—์„œ ์†์„ฑ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•œ ํ›„ ๊ธฐ๊ธฐ ์ •์ฑ…์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ๊ธฐ๊ธฐ ์ •์ฑ… ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    1. OS ์ •์ฑ… ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•œ ํ›„ Chrome OS ์ •์ฑ…์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    2. ์ตœ์†Œ ๋ฒ„์ „ ์ƒ์ž์— ํ—ˆ์šฉํ•  Chrome OS์˜ ์ตœ์†Œ ๋ฒ„์ „์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    3. Windows OS ์ •์ฑ…์— ๋Œ€ํ•ด 1~2๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

  6. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. OS ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๋Š” ๊ธฐ๊ธฐ ์ •์ฑ…์ด ํฌํ•จ๋œ ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ YAML ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    ์ด ์˜ˆ์—์„œ๋Š” Chrome OS ๋ฐ Windows์˜ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ์†Œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๊ธฐ๋งŒ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด .YAML ํŒŒ์ผ์— ๋‹ค์Œ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    - devicePolicy:
        osConstraints:
          - osType: DESKTOP_CHROME_OS
            minimumVersion: 11316.165.0
          - osType: DESKTOP_WINDOWS
            minimumVersion: 10.0.1809
    
  2. ํŒŒ์ผ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ ์ด ํŒŒ์ผ์˜ ์ด๋ฆ„์€ CONDITIONS.yaml์ž…๋‹ˆ๋‹ค.

  3. ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

    ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • NAME์€ ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ ๊ณ ์œ ํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์€ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ๋ฌธ์ž, ์ˆซ์ž, ๋ฐ‘์ค„๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • TITLE์€ ์ธ๊ฐ„์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค. ์ด ์ œ๋ชฉ์€ ์ •์ฑ…์— ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • POLICY๋Š” ์กฐ์ง์˜ ์•ก์„ธ์Šค ์ •์ฑ… ID์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ •์ฑ…์ด ์„ค์ •๋œ ๊ฒฝ์šฐ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ์ถœ๋ ฅ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

  1. OS ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๋Š” ๊ธฐ๊ธฐ ์ •์ฑ…์ด ํฌํ•จ๋œ AccessLevel ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ์š”์ฒญ ๋ณธ๋ฌธ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

    ์ด ์˜ˆ์—์„œ๋Š” Chrome OS ๋ฐ Windows์˜ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ์†Œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๊ธฐ๋งŒ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์š”์ฒญ ๋ณธ๋ฌธ์— ๋‹ค์Œ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "devicePolicy": {
             "osConstraints": [
               {
                 "osType": "DESKTOP_CHROME_OS",
                 "minimumVersion": "11316.165.0"
               },
               {
                 "osType": "DESKTOP_WINDOWS",
                 "minimumVersion": "10.0.1809"
               }
             ]
          }
         }
       ]
      }
    }

    ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • NAME์€ ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ ๊ณ ์œ ํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์€ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ๋ฌธ์ž, ์ˆซ์ž, ๋ฐ‘์ค„๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • TITLE์€ ์ธ๊ฐ„์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค. ์ด ์ œ๋ชฉ์€ ์ •์ฑ…์— ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  2. accessLevels.create๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • POLICY๋Š” ์กฐ์ง์˜ ์•ก์„ธ์Šค ์ •์ฑ… ID์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •๋ณ„ ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ

์ธ๊ฐ„ ์‚ฌ์šฉ์ž์˜ ์•ก์„ธ์Šค ์ˆ˜์ค€์€ ID๋ฅผ IP ์ฃผ์†Œ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ์™€ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์„œ๋น„์Šค ๊ณ„์ •์˜ ์•ก์„ธ์Šค ์ˆ˜์ค€์€ ํŠน์ • ์„œ๋น„์Šค ๊ณ„์ • ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Cloud Functions๋Š” ๋‹ค๋ฅธ Google Cloud ์„œ๋น„์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•ด ID๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

์ฝ˜์†”

ํ˜„์žฌ Google Cloud ์ฝ˜์†”์€ ์•ก์„ธ์Šค ์ˆ˜์ค€์— ์ฃผ ๊ตฌ์„ฑ์›์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ์ˆ˜์ค€์— ์ฃผ ๊ตฌ์„ฑ์›์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด gcloud ๋ช…๋ น์ค„ ๋„๊ตฌ ๋˜๋Š” API๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ œ๊ณตํ•  ์ฃผ ๊ตฌ์„ฑ์›์„ ๋‚˜์—ดํ•˜๋Š” ์กฐ๊ฑด์ด ํฌํ•จ๋œ YAML ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž(sysadmin@example.com)์™€ ์„œ๋น„์Šค ๊ณ„์ •(service@project.iam.gserviceaccount.com)์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    - members:
        - user:sysadmin@example.com
        - serviceAccount:service@project.iam.gserviceaccount.com
    
  2. ์ด ์•ก์„ธ์Šค ์ˆ˜์ค€์— ํฌํ•จํ•  ๊ธฐ์กด ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋‚˜์—ดํ•˜๋Š” ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ์˜ˆ์‹œ์—์„œ๋Š” ์•ก์„ธ์Šค ์ˆ˜์ค€ ์ด๋ฆ„์ด Device_Trust ๋ฐ IP_Trust์ด๊ณ  247332951433์ด ์•ก์„ธ์Šค ์ •์ฑ… ์ด๋ฆ„์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

    - members:
        - user:sysadmin@example.com
        - serviceAccount:service@project.iam.gserviceaccount.com
    
    - requiredAccessLevels:
        - accessPolicies/247332951433/accessLevels/Device_Trust
        - accessPolicies/247332951433/accessLevels/IP_Trust
    
  3. ํŒŒ์ผ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ ์ด ํŒŒ์ผ์˜ ์ด๋ฆ„์€ CONDITIONS.yaml์ž…๋‹ˆ๋‹ค.

  4. create ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --combine-function=OR \
       --policy=POLICY

    ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • NAME์€ ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ ๊ณ ์œ ํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์€ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ๋ฌธ์ž, ์ˆซ์ž, ๋ฐ‘์ค„๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • TITLE์€ ์ธ๊ฐ„์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค. ์ด ์ œ๋ชฉ์€ ์ •์ฑ…์— ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • POLICY๋Š” ์กฐ์ง์˜ ์•ก์„ธ์Šค ์ •์ฑ… ID์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ •์ฑ…์ด ์„ค์ •๋œ ๊ฒฝ์šฐ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

    • combine-function๊ฐ€ OR๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’ AND์—์„œ๋Š” ๋ชจ๋“  ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์–ด์•ผ ์•ก์„ธ์Šค ์ˆ˜์ค€์ด ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. OR ๊ฐ’์€ ๋‹ค๋ฅธ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์ง€ ์•Š๋”๋ผ๋„ ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ์ถœ๋ ฅ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

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

    ์ด ์˜ˆ์‹œ์—์„œ๋Š” ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž(sysadmin@example.com)์™€ ์„œ๋น„์Šค ๊ณ„์ •(service@project.iam.gserviceaccount.com)์„ ์ถ”๊ฐ€ํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "members": [
             "user:sysadmin@example.com",
             "serviceAccount:service@project.iam.gserviceaccount.com"
           ]
         }
       ]
     }
    }

    ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • NAME์€ ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ ๊ณ ์œ ํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์€ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ๋ฌธ์ž, ์ˆซ์ž, ๋ฐ‘์ค„๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • TITLE์€ ์ธ๊ฐ„์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค. ์ด ์ œ๋ชฉ์€ ์ •์ฑ…์— ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  2. ์ด ์•ก์„ธ์Šค ์ˆ˜์ค€์— ํฌํ•จํ•  ๊ธฐ์กด ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋‚˜์—ดํ•˜๋Š” ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ์˜ˆ์‹œ์—์„œ๋Š” ์•ก์„ธ์Šค ์ˆ˜์ค€ ์ด๋ฆ„์ด Device_Trust ๋ฐ IP_Trust์ด๊ณ  247332951433์ด ์•ก์„ธ์Šค ์ •์ฑ… ์ด๋ฆ„์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "members": [
             "user:sysadmin@example.com",
             "serviceAccount:service@project.iam.gserviceaccount.com"
           ]
         },
         {
           "requiredAccessLevels": [
             "accessPolicies/247332951433/accessLevels/Device_Trust",
             "accessPolicies/247332951433/accessLevels/IP_Trust"
           ]
         }
       ]
     }
    }
  3. combiningFunction์„ OR๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    combiningFunction, AND๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋ชจ๋“  ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์–ด์•ผ๋งŒ ์•ก์„ธ์Šค ์ˆ˜์ค€์ด ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. OR ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋ฉด IP ์ฃผ์†Œ๋‚˜ ๋‹ค๋ฅธ ํ•„์ˆ˜ ์•ก์„ธ์Šค ์ˆ˜์ค€์—์„œ ์ƒ์†๋œ ๊ฒƒ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์ง€ ์•Š๋”๋ผ๋„ ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค.

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "members": [
             "user:sysadmin@example.com",
             "serviceAccount:service@project.iam.gserviceaccount.com"
           ]
         },
         {
           "requiredAccessLevels": [
             "accessPolicies/247332951433/accessLevels/Device_Trust",
             "accessPolicies/247332951433/accessLevels/IP_Trust"
           ]
         }
       ],
       "combiningFunction": "OR"
     }
    }
  4. accessLevels.create๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • POLICY๋Š” ์กฐ์ง์˜ ์•ก์„ธ์Šค ์ •์ฑ… ID์ž…๋‹ˆ๋‹ค.