์„œ๋น„์Šค์˜ ๊ฐ์‚ฌ ์ •์ฑ… ๊ตฌ์„ฑ

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๊ตฌํ˜„๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๋ฉด Cloud Service Mesh์—์„œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค๋ฅผ ๊ฐ์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋ฅผ ๊ฐ์‚ฌํ•˜๋ฉด '๋ˆ„๊ฐ€, ๋ฌด์—‡์„, ์–ธ์ œ, ์™œ ํ–ˆ๋Š”์ง€'๋ผ๋Š” ์งˆ๋ฌธ์— ๋‹ตํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์‚ฌ ๋กœ๊ทธ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ๊ณผ ๋กœ๊ทธ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ๊ฐ์‚ฌ ์ •์ฑ…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก Cloud Service Mesh๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ๋กœ๊ทธ๋Š” Google Cloud ์ฝ˜์†”์˜ Cloud Logging ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ์—์„œ ํ™•์ธํ•˜๋ฏ€๋กœ ๊ฐ์‚ฌ ์ •์ฑ…์€ ๋‹ค์Œ ํ”Œ๋žซํผ์—์„œ๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

  • Google Cloud์šฉ GKE
  • VMware์šฉ Google Distributed Cloud(์†Œํ”„ํŠธ์›จ์–ด ์ „์šฉ)
  • ๋ฒ ์–ด๋ฉ”ํƒˆ์šฉ Google Distributed Cloud(์†Œํ”„ํŠธ์›จ์–ด ์ „์šฉ)

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

๋‹ค์Œ์€ myapi์˜ /user/profile/* ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ๋ชจ๋“  WRITE ์•ก์„ธ์Šค๋ฅผ ๊ฐ์‚ฌํ•˜๋Š” ๊ฐ์‚ฌ ์ •์ฑ…์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

  apiVersion: security.istio.io/v1beta1
  kind: AuthorizationPolicy
  metadata:
    namespace: ns1
    name: anyname
  spec:
    selector:
      matchLabels:
        app: myapi
    action: AUDIT
    rules:
    - to:
      - operation:
          methods: ["POST", "UPDATE", "DELETE"]
          paths: ["/user/profile/*"]

์ œํ•œ์‚ฌํ•ญ

  • ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด์—๋Š” ๊ฐ์‚ฌ ๋กœ๊ทธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ๊ฐ์‚ฌ ์ฝ˜ํ…์ธ ๋Š” ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ํ˜„์žฌ Cloud Service Mesh ๊ฐ์‚ฌ ๋กœ๊ทธ์—๋Š” ์ผ๋ฐ˜ ์•ก์„ธ์Šค ๋กœ๊ทธ์™€ ๋™์ผํ•œ ์‹ ๋ขฐ์„ฑ ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์›Œํฌ๋กœ๋“œ ํฌ๋“œ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜๋ฉด ์›Œํฌ๋กœ๋“œ์— ๋Œ€ํ•œ ์ผ๋ถ€ ๊ฐ์‚ฌ ๋กœ๊ทธ๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์†์‹ค๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ข…์† ๋„๊ตฌ ์„ค์น˜ ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ ๊ฒ€์ฆ์˜ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ์ดํŠธ์›จ์ด ๊ตฌ์„ฑ ์ค€๋น„

Cloud Service Mesh๋Š” ์„œ๋น„์Šค ๋ฉ”์‹œ์˜ ์ผ๋ถ€๋กœ ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ๋“ค์–ด์˜ค๊ฑฐ๋‚˜ ๋‚˜๊ฐ€๋Š” HTTP/TCP ์—ฐ๊ฒฐ์„ ์ˆ˜์‹ ํ•˜๋Š” ๋ฉ”์‹œ์ง€์˜ ์—์ง€์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ๋ฉ”์‹œ๋กœ ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐ€๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๋ฏธ์„ธํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” Envoy ํ”„๋ก์‹œ์ž…๋‹ˆ๋‹ค.

asmcli๋Š” istio-ingressgateway๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๊ณผ ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฒŒ์ดํŠธ์›จ์ด ์„ค์น˜ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Cloud Service Mesh ์„ค์น˜ ๋งž์ถค์„ค์ •

๊ฐ์‚ฌ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Cloud Service Mesh ์„ค์น˜๋ฅผ ๋งž์ถค์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜

  1. Cloud Service Mesh ์„ค์น˜ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. asmcli install์„ ์‹คํ–‰ํ•  ๋•Œ ๋‹ค์Œ ์˜ต์…˜์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

    --option audit-authorizationpolicy
    

    ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ./asmcli install \
      --project_id PROJECT_ID \
      --cluster_name CLUSTER_NAME \
      --cluster_location CLUSTER_LOCATION \
      --ca mesh_ca \
      --output_dir DIR_PATH  \
      --enable_all \
      --option audit-authorizationpolicy
    

    Cloud Service Mesh๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‹ค๋ฅธ ์˜ค๋ฒ„๋ ˆ์ด ํŒŒ์ผ์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  2. ์›Œํฌ๋กœ๋“œ์—์„œ ์ž๋™ ์‚ฌ์ด๋“œ์นด ํ”„๋ก์‹œ ์‚ฝ์ž…์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด Cloud Service Mesh ์„ค์น˜๋ฅผ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์›Œํฌ๋กœ๋“œ ๋ฐฐํฌ ๋ฐ ์žฌ๋ฐฐํฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์—…๊ทธ๋ ˆ์ด๋“œ

  1. Cloud Service Mesh ์—…๊ทธ๋ ˆ์ด๋“œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. asmcli install์„ ์‹คํ–‰ํ•  ๋•Œ ๋‹ค์Œ ์˜ต์…˜์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

    --option audit-authorizationpolicy
    

    ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ./asmcli install \
      --project_id PROJECT_ID \
      --cluster_name CLUSTER_NAME \
      --cluster_location CLUSTER_LOCATION \
      --ca mesh_ca \
      --output_dir DIR_PATH  \
      --enable_all \
      --option audit-authorizationpolicy
    

    Cloud Service Mesh๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‹ค๋ฅธ ์˜ค๋ฒ„๋ ˆ์ด ํŒŒ์ผ์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  2. ์›Œํฌ๋กœ๋“œ์—์„œ ์ž๋™ ์‚ฌ์ด๋“œ์นด ํ”„๋ก์‹œ ์‚ฝ์ž…์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด Cloud Service Mesh ์„ค์น˜๋ฅผ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ƒˆ ์ œ์–ด ์˜์—ญ์œผ๋กœ ์ „ํ™˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

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

์ด ์„น์…˜์—์„œ๋Š” Bookinfo ์ƒ˜ํ”Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์‚ฌ ๋กœ๊น…์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  1. Bookinfo ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

  2. ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด์˜ ์™ธ๋ถ€ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์š”์ฒญ์„ ์ „์†กํ•˜์—ฌ ์ผ๋ถ€ ํŠธ๋ž˜ํ”ฝ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  3. Google Cloud ์ฝ˜์†”์—์„œ ํƒ์ƒ‰ ๋ฉ”๋‰ด ๋กœ ์ด๋™ํ•˜๊ณ  Logging > ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ๋กœ ์ด๋™

  4. Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  5. ์•„์ง ๊ฐ์‚ฌ ์ •์ฑ…์„ ๋ฐฐํฌํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๊ฐ์‚ฌ ๋กœ๊ทธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ๋กœ๊ทธ๋Š” ์•ก์„ธ์Šค ๋กœ๊ทธ์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. stackdriver ์•ก์„ธ์Šค ๋กœ๊ทธ๋ฅผ ๋ณด๋ ค๋ฉด ์ฟผ๋ฆฌ ๋นŒ๋” ํ•„๋“œ์— ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ฟผ๋ฆฌ ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    logName="projects/PROJECT_ID/logs/server-accesslog-stackdriver"
    

    ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ์‚ฌ ์ •์ฑ… ๊ตฌ์„ฑ ๋ฐ ๊ฐ์‚ฌ ๋กœ๊ทธ ํ™•์ธ

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

  1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ ํด๋Ÿฌ์Šคํ„ฐ์™€ ์ƒํ˜ธ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ๋ช…๋ น์–ด๋Š” kubectl์˜ ํ˜„์žฌ ์ปจํ…์ŠคํŠธ๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    gcloud container clusters get-credentials CLUSTER_NAME \
        --project=PROJECT_ID \
        --zone=CLUSTER_LOCATION
    
  2. ๋‹ค์Œ ๊ฐ์‚ฌ ์ •์ฑ…์„ ์ ์šฉํ•˜์—ฌ /productpage ๊ฒฝ๋กœ์— ๋Œ€ํ•œ GET ์š”์ฒญ์„ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    kubectl apply -f - << EOF
    apiVersion: "security.istio.io/v1beta1"
    kind: "AuthorizationPolicy"
    metadata:
      name: "audit-productpage"
      namespace: default
    spec:
      action: AUDIT
      rules:
      - to:
        - operation:
            methods: ["GET"]
            paths: ["/productpage"]
    EOF
    
  3. Bookinfo์— ์ผ๋ถ€ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

  4. ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ์—์„œ ์ฟผ๋ฆฌ ๋นŒ๋” ํ•„๋“œ์— ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ฟผ๋ฆฌ ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    logName="projects/PROJECT_ID/logs/server-istio-audit-log"
    

    ์ด ์ฟผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ๋กœ๊ทธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋ฏธ์ง€

  5. ๋‹ค์Œ ์ •์ฑ…์„ ์ ์šฉํ•˜์—ฌ bookinfo-ratings ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์š”์ฒญ์„ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ์ •์ฑ…์€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ •์ฑ…์„ ์ ์šฉํ•˜๋ฉด ProductPage ๋ฐ Ratings ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฐ์‚ฌ ๋กœ๊ทธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    kubectl apply -f - << EOF
    apiVersion: "security.istio.io/v1beta1"
    kind: "AuthorizationPolicy"
    metadata:
      name: "audit-ratings"
      namespace: default
    spec:
      action: AUDIT
      rules:
      - from:
        - source:
            principals: ["cluster.local/ns/default/sa/bookinfo-ratings"]
        to:
        - operation:
            methods: ["GET"]
    EOF
    

    ์ƒˆ ๊ฐ์‚ฌ ์ •์ฑ…์ด ์ ์šฉ๋˜๊ธฐ ์ „์— ๋จผ์ € ์ „ํŒŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  6. Bookinfo์— 10๊ฐœ ์ด์ƒ์˜ ์š”์ฒญ์„ ์ „์†กํ•˜์—ฌ ํ‰๊ฐ€ ์„œ๋น„์Šค์— ๋„๋‹ฌํ•œ ํ›„ ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ์—์„œ ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ๋กœ๊ทธ๋Š” ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋ฏธ์ง€

  7. ๋‹ค์Œ ์ •์ฑ…์„ ์ ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    kubectl apply -f - << EOF
    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      namespace: default
      name: "audit-all"
    spec:
      action: AUDIT
      rules:
        - {}
    EOF
    
  8. Bookinfo์— ๋ช‡ ๊ฐ€์ง€ ์š”์ฒญ์„ ๋” ์ „์†กํ•œ ํ›„ ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ์—์„œ ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๊ฐ์‚ฌ ๋กœ๊ทธ์— ๋ชจ๋“  ์š”์ฒญ์ด ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

    ์ด๋ฏธ์ง€

  9. ๊ฐ์‚ฌ ์ •์ฑ…์„ ProductPage ๋ฐ Rating์œผ๋กœ ์ถ•์†Œํ•˜์—ฌ ์ œํ•œํ•˜๋ ค๋ฉด audit-all ์ •์ฑ…์„ ์‚ญ์ œํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    kubectl delete authorizationpolicy audit-all -n default
    

๋ฌธ์ œ ํ•ด๊ฒฐ

๊ฐ์‚ฌ ์ •์ฑ…์„ ์‚ฌ์šฉ ์„ค์ •ํ•œ ํ›„ ๊ฐ์‚ฌ ๋กœ๊ทธ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ์—์„œ ์ง€์ •๋œ ๊ธฐ๊ฐ„ ๋™์•ˆ ํŠธ๋ž˜ํ”ฝ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. Bookinfo์—์„œ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•˜์—ฌ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    curl -s http://EXTERNAL_IP/productpage | grep Bookstore
    
  2. ๊ฐ์‚ฌ ๋Œ€์ƒ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์š”์ฒญ์„ ์ฐจ๋‹จํ•˜๋Š” ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด์— AuthorizationPolicy๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  3. ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ์—์„œ ๋‹ค์Œ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ stackdriver ์•ก์„ธ์Šค ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์—ฌ ์š”์ฒญ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋„๋‹ฌํ•˜์˜€๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    logName="projects/PROJECT_ID/logs/server-accesslog-stackdriver"
    

    ์ด๋ฏธ์ง€

  4. Stackdriver๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  ๊ฐ์‚ฌ ๋กœ๊ทธ๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ํ˜„์žฌ istiod ์ƒํƒœ์˜ ๊ตฌ์„ฑ์„ ๋คํ”„ํ•ฉ๋‹ˆ๋‹ค. config_dump์—์„œ enable_audit_log ๋ฐ ๊ฐ์‚ฌ ์ •์ฑ…์˜ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

    istioctl dashboard envoy POD_NAME.NAMESPACE
    

    ์ด๋ฏธ์ง€ ์ด๋ฏธ์ง€ ์ด๋ฏธ์ง€

  5. ์š”์ฒญ์ด ๊ฐ์‚ฌ ์ •์ฑ… ๊ทœ์น™๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์—ญํ•  ๊ธฐ๋ฐ˜ ์•ก์„ธ์Šค ์ œ์–ด (RBAC) ๋””๋ฒ„๊ทธ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ RBAC ๋””๋ฒ„๊ทธ ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    kubectl exec POD_NAME -n NAMESPACE -c istio-proxy -- pilot-agent request POST 'logging?rbac=debug'
    
  6. ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  kubectl logs ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Pod์˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    kubectl logs POD_NAME -n NAMESPACE -c istio-proxy
    

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