์ฆ๋ช… ์–ด์„ค์…˜


์ฆ๋ช… ์–ด์„ค์…˜ ์‚ฌ์šฉ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์ฆ๋ช… ์ •์ฑ… ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” ์ฆ๋ช… ์ •์ฑ…์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์–ด์„ค์…˜์„ ์ž์„ธํžˆ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ •์ฑ…์€ Confidential Space ์ด๋ฏธ์ง€, ์›Œํฌ๋กœ๋“œ ์ปจํ…Œ์ด๋„ˆ, VM ์ธ์Šคํ„ด์Šค์—์„œ ์ˆ˜ํ–‰ํ•œ ์–ด์„ค์…˜์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์–ด์„ค์…˜

์–ด์„ค์…˜ ์œ ํ˜• ์„ค๋ช…

assertion.dbgstat

์ƒํ˜ธ์ž‘์šฉ:

  • ์›Œํฌ๋กœ๋“œ ์šด์˜์ž: --image-family ๊ฐ’์ž…๋‹ˆ๋‹ค.
์ •์˜๋œ ๋ฌธ์ž์—ด

Confidential Space ์ด๋ฏธ์ง€๊ฐ€ ๋””๋ฒ„๊ทธ ๋˜๋Š” ํ”„๋กœ๋•์…˜ ๋ฒ„์ „์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์œ ํšจํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • enable: ๋””๋ฒ„๊ทธ ์ด๋ฏธ์ง€๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • disabled-since-boot: ํ”„๋กœ๋•์…˜ ์ด๋ฏธ์ง€๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ์‹œ

๋‹ค์Œ ์ฝ”๋“œ๋Š” Confidential Space ์ด๋ฏธ์ง€์˜ ๋””๋ฒ„๊ทธ ๋ฒ„์ „์ด ์‚ฌ์šฉ ์ค‘์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

assertion.dbgstat == "enable"

๋‹ค์Œ ์ฝ”๋“œ๋Š” Confidential Space ์ด๋ฏธ์ง€์˜ ํ”„๋กœ๋•์…˜ ๋ฒ„์ „์ด ์‚ฌ์šฉ ์ค‘์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

assertion.dbgstat == "disabled-since-boot"
assertion.submods.confidential_space.support_attributes ๋ฌธ์ž์—ด ๋ฐฐ์—ด

TEE์˜ ๋ณด์•ˆ ๋ฒ„์ „์ด ํ”„๋กœ๋•์…˜ Confidential Space ์ด๋ฏธ์ง€์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋””๋ฒ„๊ทธ Confidential Space ์ด๋ฏธ์ง€์—๋Š” ์„ค์ •๋œ ์ง€์› ์†์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ง€์› ์†์„ฑ์€ 3๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  • LATEST: ์ตœ์‹  ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€์ด๋ฉฐ ์ง€์›์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. LATEST ์ด๋ฏธ์ง€๋Š” STABLE ๋ฐ USABLE์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
  • STABLE: ์ด ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€๋Š” ์ง€์›์ด ์ œ๊ณต๋˜๋ฉฐ ์ทจ์•ฝ์ ์ด ๋ชจ๋‹ˆํ„ฐ๋ง๋ฉ๋‹ˆ๋‹ค. STABLE ์ด๋ฏธ์ง€๋„ USABLE์ž…๋‹ˆ๋‹ค.
  • USABLE: ์ด ์†์„ฑ๋งŒ ์žˆ๋Š” ์ด๋ฏธ์ง€๋Š” ์ง€์›์ด ์ค‘๋‹จ๋˜์–ด ๋” ์ด์ƒ ์ทจ์•ฝ์ ์ด ๋ชจ๋‹ˆํ„ฐ๋ง๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์— ๋”ฐ๋ฅธ ์ฑ…์ž„์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค.
  • EXPERIMENTAL: ์ด ์†์„ฑ๋งŒ ์žˆ๋Š” ์ด๋ฏธ์ง€๋Š” ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ ํ”„๋กœ๋•์…˜์— ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. EXPERIMENTAL ์ด๋ฏธ์ง€๋Š” LATEST, STABLE ๋˜๋Š” USABLE ์†์„ฑ์„ ๊ฐ–์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์˜ˆ

๋‹ค์Œ ์ฝ”๋“œ๋Š” ์•ˆ์ •์ ์ธ ๋ฒ„์ „์˜ Confidential Space ์ด๋ฏธ์ง€๊ฐ€ ์‚ฌ์šฉ ์ค‘์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

"STABLE" in assertion.submods.confidential_space.support_attributes
assertion.swname ์ •์˜๋œ ๋ฌธ์ž์—ด

์ฆ๋ช… ํ•ญ๋ชฉ์—์„œ ์‹คํ–‰๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ํ•ญ์ƒ CONFIDENTIAL_SPACE์ž…๋‹ˆ๋‹ค.

์˜ˆ
assertion.swname == "CONFIDENTIAL_SPACE"
assertion.swversion ๋ฌธ์ž์—ด ๋ฐฐ์—ด

Confidential Space ์ด๋ฏธ์ง€์˜ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€์˜ ์ตœ์‹  ๋ฒ„์ „์„ ํƒ€๊ฒŸํŒ…ํ•˜๋ ค๋ฉด assertion.submods.confidential_space.support_attributes์„ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์˜ˆ
int(assertion.swversion[0]) == 230103

์ปจํ…Œ์ด๋„ˆ ์–ด์„ค์…˜

์–ด์„ค์…˜ ์œ ํ˜• ์„ค๋ช…

assertion.submods.container.cmd_override

์ƒํ˜ธ์ž‘์šฉ:

  • ์›Œํฌ๋กœ๋“œ ์ž‘์„ฑ์ž: allow_cmd_override ์‹คํ–‰ ์ •์ฑ…์ž…๋‹ˆ๋‹ค.
  • ์›Œํฌ๋กœ๋“œ ์—ฐ์‚ฐ์ž: tee-cmd ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
๋ฌธ์ž์—ด ๋ฐฐ์—ด

์›Œํฌ๋กœ๋“œ ์ด๋ฏธ์ง€์— ์‚ฌ์šฉ๋˜๋Š” CMD ๋ช…๋ น์–ด ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

๋‹ค์Œ ์ฝ”๋“œ๋Š” ์›Œํฌ๋กœ๋“œ ์ด๋ฏธ์ง€์˜ CMD๋ฅผ ๋ฎ์–ด์“ฐ์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

size(assertion.submods.container.cmd_override) == 0

๋‹ค์Œ ์ฝ”๋“œ๋Š” program๊ฐ€ CMD ์žฌ์ •์˜์—์„œ ์œ ์ผํ•œ ์ฝ˜ํ…์ธ ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

assertion.submods.container.cmd_override == ['program']

assertion.submods.container.env

์ƒํ˜ธ์ž‘์šฉ:

  • ์›Œํฌ๋กœ๋“œ ์ž‘์„ฑ์ž: allow_env_override ์‹คํ–‰ ์ •์ฑ…์ž…๋‹ˆ๋‹ค.
  • ์›Œํฌ๋กœ๋“œ ์—ฐ์‚ฐ์ž: tee-env-ENVIRONMENT_VARIABLE_NAME ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
JSON ๊ฐœ์ฒด

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฐ ํ•ด๋‹น ๊ฐ’์ด ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ช…์‹œ์ ์œผ๋กœ ์ „๋‹ฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ

๋‹ค์Œ ์ฝ”๋“œ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜ example-env-1์ด value-1๋กœ ์„ค์ •๋˜์—ˆ๊ณ  example-env-2๊ฐ€ value-2๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

assertion.submods.container.env == {"example-env-1": "value-1", "example-env-2": "value-2"}

assertion.submods.container.env_override

์ƒํ˜ธ์ž‘์šฉ:

  • ์›Œํฌ๋กœ๋“œ ์ž‘์„ฑ์ž: allow_env_override ์‹คํ–‰ ์ •์ฑ…์ž…๋‹ˆ๋‹ค.
  • ์›Œํฌ๋กœ๋“œ ์—ฐ์‚ฐ์ž: tee-env-ENVIRONMENT_VARIABLE_NAME ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
๋ฌธ์ž์—ด

์›Œํฌ๋กœ๋“œ ์—ฐ์‚ฐ์ž๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋ฎ์–ด์ผ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

๋‹ค์Œ ์ฝ”๋“œ๋Š” ์›Œํฌ๋กœ๋“œ ์šด์˜์ž๊ฐ€ example ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

!has(assertion.submods.container.env_override.example)

๋‹ค์Œ ์ฝ”๋“œ๋Š” ์›Œํฌ๋กœ๋“œ ์šด์˜์ž๊ฐ€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋ฎ์–ด์“ฐ์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

size(assertion.submods.container.env_override) == 0
assertion.submods.container.image_digest ๋ฌธ์ž์—ด

์›Œํฌ๋กœ๋“œ ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฏธ์ง€ ๋‹ค์ด์ œ์ŠคํŠธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ์กฐ๊ฑด์„ ์ง€์ •ํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋‹น์‚ฌ์ž๊ฐ€ ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๋„๋ก ์Šน์ธ๋œ ์›Œํฌ๋กœ๋“œ์— ๋™์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ
assertion.submods.container.image_digest == "sha256:837ccb607e312b170fac7383d7ccfd61fa5072793f19a25e75fbacb56539b86b"
assertion.submods.container.image_id ๋ฌธ์ž์—ด

์›Œํฌ๋กœ๋“œ ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฏธ์ง€ ID๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ
assertion.submods.container.image_id == "sha256:652a44b0e911271ba07cf2915cd700fdfa50abd62a98f87a57fdebc59843d93f"

assertion.submods.container.image_reference

์ƒํ˜ธ์ž‘์šฉ:

  • ์›Œํฌ๋กœ๋“œ ์—ฐ์‚ฐ์ž: tee-image-reference ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
๋ฌธ์ž์—ด

Confidential Space ์ด๋ฏธ์ง€์—์„œ ์‹คํ–‰๋˜๋Š” ์›Œํฌ๋กœ๋“œ ์ปจํ…Œ์ด๋„ˆ์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ
assertion.submods.container.image_reference == "us-docker.pkg.dev/PROJECT_ID/WORKLOAD_CONTAINER:latest"

assertion.submods.container.image_signatures

์ƒํ˜ธ์ž‘์šฉ:

  • ์›Œํฌ๋กœ๋“œ ์—ฐ์‚ฐ์ž: tee-signed-image-repos ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
JSON ๊ฐœ์ฒด

์ด๋ฏธ์ง€์— ํŠน์ • ์„œ๋ช…์ด ์žˆ๊ฑฐ๋‚˜ ๊ณต๊ฐœ ํ‚ค์™€ ์„œ๋ช… ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์„œ๋ช…๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ์กฐ๊ฑด์„ ์ง€์ •ํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋‹น์‚ฌ์ž๊ฐ€ ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๋„๋ก ์Šน์ธ๋œ ์›Œํฌ๋กœ๋“œ์— ๋™์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด์„ค์…˜์—๋Š” ๋‹ค์Œ ์š”์†Œ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • key_id: ๊ณต๊ฐœ ํ‚ค์˜ 16์ง„์ˆ˜ ๋””์ง€ํ„ธ ์ง€๋ฌธ์ž…๋‹ˆ๋‹ค. ์ง€๋ฌธ์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    openssl pkey -pubin -in public_key.pem -outform DER | openssl sha256

    ์—ฌ๊ธฐ์„œ public_key.pem๋Š” PEM ํ˜•์‹์˜ ๊ณต๊ฐœ ํ‚ค์ž…๋‹ˆ๋‹ค.

  • signature: ์„œ๋ช…๋œ ์ปจํ…Œ์ด๋„ˆ์™€ ์—ฐ๊ฒฐ๋˜๊ณ  ๊ฐ„๋‹จํ•œ ์„œ๋ช… ํ˜•์‹์„ ๋”ฐ๋ฅด๋Š” ํŽ˜์ด๋กœ๋“œ์˜ ์„œ๋ช…์ž…๋‹ˆ๋‹ค.
  • signature_algorithm: ํ‚ค์— ์„œ๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

    • RSASSA_PSS_SHA256 (SHA-256 ๋‹ค์ด์ œ์ŠคํŠธ๊ฐ€ ์žˆ๋Š” RSASSA-PSS)
    • RSASSA_PKCS1V15_SHA256 (SHA-256 ๋‹ค์ด์ œ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” RSASSA-PKCS1 v1_5)
    • ECDSA_P256_SHA256 (P-256 ๊ณก์„ ์˜ ECDSA, SHA-256 ๋‹ค์ด์ œ์ŠคํŠธ)
์˜ˆ
assertion.swname == 'CONFIDENTIAL_SPACE' && ['ECDSA_P256_SHA256:PUBLIC_KEY_FINGERPRINT'].exists(fingerprint, fingerprint in assertion.submods.container.image_signatures.map(sig, sig.signature_algorithm+':'+sig.key_id)) && 'serviceaccount.iam.gserviceaccount.com' in assertion.google_service_accounts"

assertion.submods.container.restart_policy

์ƒํ˜ธ์ž‘์šฉ:

  • ์›Œํฌ๋กœ๋“œ ์—ฐ์‚ฐ์ž: tee-restart-policy ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
์ •์˜๋œ ๋ฌธ์ž์—ด

์›Œํฌ๋กœ๋“œ๊ฐ€ ์ค‘์ง€๋  ๋•Œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐ์ฒ˜์˜ ๋‹ค์‹œ ์‹œ์ž‘ ์ •์ฑ…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์œ ํšจํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Never(๊ธฐ๋ณธ)
  • Always
  • OnFailure
์˜ˆ
assertion.submods.container.restart_policy == "Never"

VM ์–ด์„ค์…˜

์–ด์„ค์…˜ ์œ ํ˜• ์„ค๋ช…

assertion.google_service_accounts

์ƒํ˜ธ์ž‘์šฉ:

๋ฌธ์ž์—ด ๋ฐฐ์—ด

์ง€์ •๋œ ์„œ๋น„์Šค ๊ณ„์ •์ด ์›Œํฌ๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” VM์— ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ๋˜๋Š” VM ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์—์„œ tee-impersonate-service-accounts ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์—ด๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ
workload-service-account@my-project.iam.gserviceaccount.com in assertion.google_service_accounts
assertion.hwmodel ๋ฌธ์ž์—ด

๊ธฐ๋ณธ ์ปจํ”ผ๋ด์…œ ์ปดํ“จํŒ… ๊ธฐ์ˆ ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ํ”Œ๋žซํผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • GCP_AMD_SEV
  • INTEL_TDX
์˜ˆ
assertion.hwmodel == "GCP_AMD_SEV"

assertion.submods.confidential_space.monitoring_enabled

์ƒํ˜ธ์ž‘์šฉ:

  • ์›Œํฌ๋กœ๋“œ ์ž‘์„ฑ์ž: monitoring_memory_allow ์‹คํ–‰ ์ •์ฑ…์ž…๋‹ˆ๋‹ค.
  • ์›Œํฌ๋กœ๋“œ ์—ฐ์‚ฐ์ž: tee-memory-monitoring-enable ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
๋ถˆ๋ฆฌ์–ธ

์ฆ๋ช… ํ•ญ๋ชฉ์˜ ๋ชจ๋‹ˆํ„ฐ๋ง ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ
assertion.submods.confidential_space.monitoring_enabled.memory == true
assertion.submods.gce.instance_id ๋ฌธ์ž์—ด

VM ์ธ์Šคํ„ด์Šค ID๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ
assertion.submods.gce.instance_id == "0000000000000000000"
assertion.submods.gce.instance_name ๋ฌธ์ž์—ด

VM ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ
assertion.submods.gce.instance_name == "workload-vm"
assertion.submods.gce.project_id ๋ฌธ์ž์—ด

VM์ด ์ง€์ •๋œ ํ”„๋กœ์ ํŠธ ID๋กœ Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ
assertion.submods.gce.project_id == "project-id"
assertion.submods.gce.project_number ๋ฌธ์ž์—ด

VM์ด ์ง€์ •๋œ ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ๋กœ Google Cloud ํ”„๋กœ์ ํŠธ์—์„œ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ
assertion.submods.gce.project_number == "00000000000"

assertion.submods.gce.zone

์ƒํ˜ธ์ž‘์šฉ:

  • ์›Œํฌ๋กœ๋“œ ์šด์˜์ž: --zone ๊ฐ’์ž…๋‹ˆ๋‹ค.
๋ฌธ์ž์—ด

VM์ด ์ง€์ •๋œ ์˜์—ญ์—์„œ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ
assertion.submods.gce.zone == "us-central1-a"

assertion.submods.nvidia_gpu.cc_mode

์ƒํ˜ธ์ž‘์šฉ:

  • ์›Œํฌ๋กœ๋“œ ์—ฐ์‚ฐ์ž: tee-install-gpu-driver ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜
์ •์˜๋œ ๋ฌธ์ž์—ด

NVIDIA์˜ ์ปจํ”ผ๋ด์…œ ์ปดํ“จํŒ… ๋“œ๋ผ์ด๋ฒ„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์œ ํšจํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • OFF: NVIDIA ์ปจํ”ผ๋ด์…œ ์ปดํ“จํŒ… ๊ธฐ๋Šฅ์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ON: NVIDIA H100 ํ•˜๋“œ์›จ์–ด, ํŽŒ์›จ์–ด, ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์ปจํ”ผ๋ด์…œ ์ปดํ“จํŒ… ๊ธฐ๋Šฅ์„ ์™„์ „ํžˆ ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • DEVTOOLS: GPU๊ฐ€ ON ๋ชจ๋“œ์˜ ์›Œํฌํ”Œ๋กœ์™€ ์ผ์น˜ํ•˜์ง€๋งŒ ๋ณด์•ˆ ๋ณดํ˜ธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋Š” ๋ถ€๋ถ„ ์ปจํ”ผ๋ด์…œ ์ปดํ“จํŒ… ๋ชจ๋“œ์— ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ
assertion.submods.nvidia_gpu.cc_mode == "ON"