IAM ์กฐ๊ฑด์˜ ์†์„ฑ ์ฐธ์กฐ

์ด ๋ฌธ์„œ๋Š” ์กฐ๊ฑด ํ‘œํ˜„์‹์—์„œ ์ง€์›๋˜๋Š” ์†์„ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ง€์›๋˜๋Š” ์กฐ๊ฑด ์†์„ฑ

๋‹ค์Œ ์„น์…˜์—๋Š” ์ง€์›๋˜๋Š” ์†์„ฑ์„ ์š”์•ฝํ•˜๊ณ  ๊ฐ ์†์„ฑ์„ ์ธ์‹ํ•˜๋Š”Google Cloud ์„œ๋น„์Šค๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค ์†์„ฑ

๋‹ค์Œ ์†์„ฑ์€ ์š”์ฒญ์˜ ์ฃผ์ฒด์ธ ๋ฆฌ์†Œ์Šค์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ ์‚ฌ์šฉ ์š”์•ฝ ์ง€์›๋˜๋Š” Google Cloud ์„œ๋น„์Šค
๋ฆฌ์†Œ์Šค ์„œ๋น„์Šค ์†์„ฑ

์‚ฌ์šฉ ์ค‘์ธ Google Cloud ์„œ๋น„์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•ก์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ด ์†์„ฑ์€ ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Apigee
  • Application Integration
  • Apigee API ํ—ˆ๋ธŒ
  • ๋ฐฑ์—… ๋ฐ DR ์„œ๋น„์Šค
  • BigQuery
  • BigQuery Reservation API
  • Bigtable
  • Binary Authorization
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Firestore
  • IAP(Identity-Aware Proxy)
  • Integration Connectors
  • Apache Kafka์šฉ Google Cloud ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner
๋ฆฌ์†Œ์Šค ์œ ํ˜• ์†์„ฑ

๋ฆฌ์†Œ์Šค ์œ ํ˜•์„ ๊ธฐ์ค€์œผ๋กœ ์•ก์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ด ์†์„ฑ์€ ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Apigee
  • Application Integration
  • Apigee API ํ—ˆ๋ธŒ
  • BigQuery
  • BigQuery Reservation API
  • Bigtable
  • Binary Authorization
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Firestore
  • IAP(Identity-Aware Proxy)
  • Integration Connectors
  • Apache Kafka์šฉ Google Cloud ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner
๋ฆฌ์†Œ์Šค ์ด๋ฆ„ ์†์„ฑ

๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ์•ก์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ด ์†์„ฑ์€ ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Apigee
  • Application Integration
  • Apigee API ํ—ˆ๋ธŒ
  • ๋ฐฑ์—… ๋ฐ DR ์„œ๋น„์Šค
  • BigQuery
  • BigQuery Reservation API
  • Bigtable
  • Binary Authorization
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Firestore
  • Integration Connectors
  • Apache Kafka์šฉ Google Cloud ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค
  • Pub/Sub Lite
  • Secret Manager
  • Spanner
๋ฆฌ์†Œ์Šค ํƒœ๊ทธ

๋ฆฌ์†Œ์Šค์— ์—ฐ๊ฒฐ๋œ ํƒœ๊ทธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•ก์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ด ์†์„ฑ์€ ๋‹ค์Œ ์œ„์น˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ
  • ๊ฑฐ๋ถ€ ์ •์ฑ… ๊ฑฐ๋ถ€ ๊ทœ์น™
๋ชจ๋“  Google Cloud ์„œ๋น„์Šค(์ƒ์†๋œ ์กฐ๊ฑด ์ง€์› ์ฐธ์กฐ)

๋ฆฌ์†Œ์Šค ์†์„ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ํŽ˜์ด์ง€์˜ ๋ฆฌ์†Œ์Šค ์†์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฃผ ๊ตฌ์„ฑ์› ์†์„ฑ

๋‹ค์Œ ์†์„ฑ์€ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ ๊ตฌ์„ฑ์›๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ ์‚ฌ์šฉ ์š”์•ฝ ์ง€์›๋˜๋Š” ์ฃผ ๊ตฌ์„ฑ์› ์œ ํ˜•

์ฃผ ๊ตฌ์„ฑ์› ์œ ํ˜• ์†์„ฑ

์š”์ฒญ์˜ ์ฃผ ๊ตฌ์„ฑ์› ์œ ํ˜•์— ๋”ฐ๋ผ ์ •์ฑ…์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์†์„ฑ์€ ์ฃผ ๊ตฌ์„ฑ์› ์•ก์„ธ์Šค ๊ฒฝ๊ณ„ ์ •์ฑ…์˜ ์ •์ฑ… ๋ฐ”์ธ๋”ฉ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Google ๊ณ„์ •
  • ์ง์› ID ํ’€ ID
  • ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ํ’€ ID
  • ์„œ๋น„์Šค ๊ณ„์ •

์ฃผ ๊ตฌ์„ฑ์› ์ฃผ์ฒด ์†์„ฑ

์š”์ฒญ์˜ ์ฃผ ๊ตฌ์„ฑ์› ID์— ๋”ฐ๋ผ ์ •์ฑ…์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์†์„ฑ์€ ์ฃผ ๊ตฌ์„ฑ์› ์•ก์„ธ์Šค ๊ฒฝ๊ณ„ ์ •์ฑ…์˜ ์ •์ฑ… ๋ฐ”์ธ๋”ฉ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Google ๊ณ„์ •
  • ์ง์› ID ํ’€ ID
  • ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ํ’€ ID
  • ์„œ๋น„์Šค ๊ณ„์ •

์ฃผ ๊ตฌ์„ฑ์› ์†์„ฑ์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ํŽ˜์ด์ง€์˜ ์ฃผ ๊ตฌ์„ฑ์› ์†์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์š”์ฒญ ์†์„ฑ

๋‹ค์Œ ์†์„ฑ์€ ์š”์ฒญ์˜ ์„ธ๋ถ€์ •๋ณด์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ ์‚ฌ์šฉ ์š”์•ฝ ์ง€์›๋˜๋Š” Google Cloud ์„œ๋น„์Šค

์•ก์„ธ์Šค ์ˆ˜์ค€ ์†์„ฑ

ํŠน์ • ์•ก์„ธ์Šค ์ˆ˜์ค€์— ๋”ฐ๋ผ ์•ก์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์•ก์„ธ์Šค ์ˆ˜์ค€์€ ์›๋ณธ IP ์ฃผ์†Œ, ๊ธฐ๊ธฐ ์†์„ฑ, ์‹œ๊ฐ„ ๋“ฑ ์š”์ฒญ ๋ฐ ์š”์ฒญ์ž์— ๋Œ€ํ•œ ์›์‹œ ์†์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ„์‚ฐ๋œ ์†์„ฑ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด onNetwork ์•ก์„ธ์Šค ์ˆ˜์ค€์—์„œ ์š”์ฒญ์„ ํ•˜๋Š” ๊ธฐ๊ธฐ๋Š” ํŠน์ • IP ์ฃผ์†Œ ๋ฒ”์œ„์—์„œ ์‹œ์ž‘ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ์ˆ˜์ค€์€ ์กฐ์ง์˜ ๊ด€๋ฆฌ์ž๊ฐ€ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ์†์„ฑ์€ ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IAP(Identity-Aware Proxy)

API ์†์„ฑ

ํŠน์ • Google CloudAPI ๋˜๋Š” ์„œ๋น„์Šค์—์„œ ์ œ๊ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•ก์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ด ์†์„ฑ์€ ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • API ๊ฒŒ์ดํŠธ์›จ์ด
  • AutoML
  • Certificate Authority Service
  • Cloud Run Functions
  • Cloud Healthcare API
  • Cloud Key Management Service
  • Cloud Run
  • Cloud Runtime Configuration API
  • Cloud Storage
  • Compute Engine
  • Artifact Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • IAP(Identity-Aware Proxy)
  • Microsoft Active Directory์šฉ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค
  • ์‚ฌ์šฉ์ž ๊ด€๋ฆฌํ˜• ๋…ธํŠธ๋ถ
  • Resource Manager
  • Secret Manager
  • ์„œ๋น„์Šค ๊ด€๋ฆฌ

๋‚ ์งœ/์‹œ๊ฐ„ ์†์„ฑ

Google Cloud ๋ฆฌ์†Œ์Šค์— ๋งŒ๋ฃŒ, ์˜ˆ์•ฝ, ๊ธฐ๊ฐ„ ์ œํ•œ ์•ก์„ธ์Šค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ ์ด๋Ÿฌํ•œ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  Google Cloud ์„œ๋น„์Šค(์ƒ์†๋œ ์กฐ๊ฑด ์ง€์› ์ฐธ์กฐ)

๋Œ€์ƒ IP/ํฌํŠธ ์†์„ฑ

์š”์ฒญ์˜ ๋Œ€์ƒ IP ์ฃผ์†Œ ๋˜๋Š” ํฌํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ก์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Compute Engine ๊ฐ€์ƒ ๋จธ์‹ (VM) ์ธ์Šคํ„ด์Šค๋Š” 10.0.0.2์™€ ๊ฐ™์€ ์™ธ๋ถ€ IP๋ฅผ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํฌํŠธ 22๋Š” ๊ด€๋ฆฌ ์šฉ๋„๋กœ๋งŒ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IAP(Identity-Aware Proxy) TCP ์ „๋‹ฌ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ ์ด๋Ÿฌํ•œ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IAP(Identity-Aware Proxy)

์ „๋‹ฌ ๊ทœ์น™ ์†์„ฑ

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

ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ ์ด๋Ÿฌํ•œ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

URL ๊ฒฝ๋กœ/ํ˜ธ์ŠคํŠธ ์†์„ฑ

์š”์ฒญ์˜ URL ๊ฒฝ๋กœ ๋˜๋Š” ํ˜ธ์ŠคํŠธ์— ๋”ฐ๋ผ ์•ก์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ https://example.com์€ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๋„๋ฉ”์ธ์ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ง€์ •ํ•˜๊ณ  https://hr.example.com/admin์€ ์ธ์‚ฌ ๊ด€๋ฆฌ ๋‹ด๋‹น์ž๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŽ˜์ด์ง€์— ์•ก์„ธ์Šคํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋„๋ก ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ ์ด๋Ÿฌํ•œ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • IAP(Identity-Aware Proxy)
  • Cloud Run

์š”์ฒญ ์†์„ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ํŽ˜์ด์ง€์˜ ์š”์ฒญ ์†์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ƒ์†๋œ ์กฐ๊ฑด ์ง€์›

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

์กฐ์ง, ํด๋” ๋˜๋Š” ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์—์„œ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋Œ€๋ถ€๋ถ„์˜ ์†์„ฑ์€ ํŠน์ • ๋ฆฌ์†Œ์Šค ์œ ํ˜•์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. ์กฐ๊ฑด์˜ ์ผ๋ถ€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์กฐ๊ฑด์˜ ์ผ๋ถ€๊ฐ€ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•ด์„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด resource.name.endsWith == devResource ์กฐ๊ฑด์€ IAM ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ IAM ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ์ด ํŽ˜์ด์ง€์— ์„ค๋ช…๋œ ๋ฆฌ์†Œ์Šค ์œ ํ˜• ๋ฐ ๋ฆฌ์†Œ์Šค ์„œ๋น„์Šค ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์กฐ๊ฑด์€ Compute Engine ์ธ์Šคํ„ด์Šค ์ด์™ธ์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ์œ ํ˜•์— ๋Œ€ํ•ด true๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ Compute Engine ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ ์กฐ๊ฑด์€ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

resource.type != 'compute.googleapis.com/Disk' ||
    resource.name.endsWith('devResource')

๋ฆฌ์†Œ์Šค์— ์—ฐ๊ฒฐ๋œ ํƒœ๊ทธ๋ฅผ ํ™•์ธํ•˜๋Š” ์กฐ๊ฑด์˜ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํƒœ๊ทธ ํ‚ค ๋ฐ ๊ฐ’์„ ํ™•์ธํ•  ๋•Œ ๋ฆฌ์†Œ์Šค ์œ ํ˜• ๋ฐ ๋ฆฌ์†Œ์Šค ์„œ๋น„์Šค๋ฅผ ํฌํ•จํ•œ ๋‹ค๋ฅธ ์†์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค ์†์„ฑ

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

resource.service ์†์„ฑ

resource.service ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ ์ค‘์ธGoogle Cloud ์„œ๋น„์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด cloudresourcemanager.googleapis.com ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋Š” ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๊ฐ’ ๋ชฉ๋ก์€ ๋ฆฌ์†Œ์Šค ์„œ๋น„์Šค ๊ฐ’์„ ์ฐธ์กฐํ•˜์„ธ์š”.

resource.service ์†์„ฑ์€ ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ ๋ณ€์ˆ˜ resource.service
์†์„ฑ ์œ ํ˜•

string

์ง€์›๋˜๋Š” ๊ฐ’ ๋ชฉ๋ก์€ ๋ฆฌ์†Œ์Šค ์„œ๋น„์Šค ๊ฐ’์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ง€์›๋˜๋Š” ์—ฐ์‚ฐ์ž ,
์„ธ๋ถ€์ •๋ณด ์กฐ๊ฑด์—์„œ resource.type ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์†์„ฑ๊ณผ ๊ฐ™์Œ() ๋˜๋Š” ๊ฐ™์ง€ ์•Š์Œ()์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ ‘๋‘์‚ฌ ๋˜๋Š” ์ ‘๋ฏธ์‚ฌ ํ™•์ธ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋น„๊ต๋กœ ์ธํ•ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ

Compute Engine ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

resource.service == "compute.googleapis.com"
์ง€์›๋˜๋Š” ์„œ๋น„์Šค
  • Apigee
  • Application Integration
  • Apigee API ํ—ˆ๋ธŒ
  • ๋ฐฑ์—… ๋ฐ DR ์„œ๋น„์Šค
  • BigQuery
  • BigQuery Reservation API
  • Bigtable
  • Binary Authorization
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Firestore
  • IAP(Identity-Aware Proxy)
  • Integration Connectors
  • Apache Kafka์šฉ Google Cloud ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner

resource.type ์†์„ฑ

resource.type ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์†Œ์Šค ์œ ํ˜•์„ ๊ธฐ์ค€์œผ๋กœ ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด storage.googleapis.com/Object ์œ ํ˜•์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋Š” ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๊ฐ’ ๋ชฉ๋ก์€ ๋ฆฌ์†Œ์Šค ์œ ํ˜• ๊ฐ’์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์กฐ๊ฑด์—์„œ resource.name ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ resource.type ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด์ด ์ ์šฉ๋˜๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜•์„ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ํŽ˜์ด์ง€์˜ resource.name ์†์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

resource.type ์†์„ฑ์€ ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ ๋ณ€์ˆ˜ resource.type
์†์„ฑ ์œ ํ˜•

string

์ง€์›๋˜๋Š” ๊ฐ’ ๋ชฉ๋ก์€ ๋ฆฌ์†Œ์Šค ์œ ํ˜• ๊ฐ’์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ง€์›๋˜๋Š” ์—ฐ์‚ฐ์ž ,
์„ธ๋ถ€์ •๋ณด ์กฐ๊ฑด์—์„œ resource.type ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์†์„ฑ๊ณผ ๊ฐ™์Œ() ๋˜๋Š” ๊ฐ™์ง€ ์•Š์Œ()์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ ‘๋‘์‚ฌ ๋˜๋Š” ์ ‘๋ฏธ์‚ฌ ํ™•์ธ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋น„๊ต๋กœ ์ธํ•ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ์‹œ

๋ฆฌ์†Œ์Šค๊ฐ€ Compute Engine ์ด๋ฏธ์ง€๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

resource.type != "compute.googleapis.com/Image"

๋ฆฌ์†Œ์Šค๊ฐ€ Compute Engine ์ด๋ฏธ์ง€ ๋˜๋Š” ์˜๊ตฌ ๋””์Šคํฌ์ธ ๊ฒฝ์šฐ์—๋งŒ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

(resource.type == "compute.googleapis.com/Image" ||
 resource.type == "compute.googleapis.com/Disk")
์ง€์›๋˜๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜•
Apigee
  • API ์ œํ’ˆ ์†์„ฑ
  • API ์ œํ’ˆ
  • API ํ”„๋ก์‹œ
  • API ํ”„๋ก์‹œ ํ‚ค-๊ฐ’ ๋งต ํ•ญ๋ชฉ
  • API ํ”„๋ก์‹œ ํ‚ค-๊ฐ’ ๋งต
  • API ํ”„๋ก์‹œ ๋ฒ„์ „
  • ์บ์‹œ
  • ๊ฐœ๋ฐœ์ž ์•ฑ ์†์„ฑ
  • ๊ฐœ๋ฐœ์ž ์•ฑ
  • ๊ฐœ๋ฐœ์ž ์†์„ฑ
  • ๊ฐœ๋ฐœ์ž
  • ํ™˜๊ฒฝ ํ‚ค-๊ฐ’ ๋งต ํ•ญ๋ชฉ
  • ํ™˜๊ฒฝ ํ‚ค-๊ฐ’ ๋งต
  • ๋‚ด๋ณด๋‚ด๊ธฐ
  • ํ๋ฆ„ ํ›„ํฌ
  • ํ‚ค ์ €์žฅ์†Œ ๋ณ„์นญ
  • ํ‚ค ์ €์žฅ์†Œ
  • ์ฟผ๋ฆฌ
  • ์š”๊ธˆ์ œ
  • ์ฐธ์กฐ
  • ๊ณต์œ  ํ๋ฆ„ ๋ฒ„์ „
  • ๊ณต์œ  ํ๋ฆ„
  • ๋Œ€์ƒ ์„œ๋ฒ„
  • Trace(๋””๋ฒ„๊ทธ) ์„ธ์…˜
Application Integration
  • ์ธ์ฆ ๊ตฌ์„ฑ
  • ์‹คํ–‰
  • ํ†ตํ•ฉ ๋ฒ„์ „
  • ํ†ตํ•ฉ
  • ์œ„์น˜
  • ์ •์ง€
Apigee API ํ—ˆ๋ธŒ
  • API
  • API ์ž‘์—…
  • ์ •์˜
  • ๋ฐฐํฌ
  • specs
  • ๋ฒ„์ „
๋ฐฑ์—… ๋ฐ DR ์„œ๋น„์Šค
  • Backup Vault
BigQuery
  • ๋ฐ์ดํ„ฐ ์„ธํŠธ
  • ๋ชจ๋ธ
  • ๋ฃจํ‹ด
  • ํ…Œ์ด๋ธ”
BigQuery Reservation API
  • ํ• ๋‹น
  • BI ์˜ˆ์•ฝ
  • ์šฉ๋Ÿ‰ ์•ฝ์ •
  • ์œ„์น˜
  • ์˜ˆ์•ฝ
Bigtable
  • ํด๋Ÿฌ์Šคํ„ฐ
  • ์ธ์Šคํ„ด์Šค
  • ํ…Œ์ด๋ธ”
Binary Authorization
  • ์ฆ๋ช…์ž
  • ์ง€์†์  ๊ฒ€์ฆ ๊ตฌ์„ฑ
  • ์ •์ฑ…
Cloud Key Management Service
  • Crypto ํ‚ค ๋ฒ„์ „
  • Crypto ํ‚ค
  • ํ‚ค๋ง
  • ์œ„์น˜
Cloud Logging
  • ๋กœ๊ทธ ๋ฒ„ํ‚ท
  • ๋กœ๊ทธ ๋ทฐ
Cloud SQL
  • ๋ฐฑ์—… ์‹คํ–‰
  • ์ธ์Šคํ„ด์Šค
Cloud Storage
  • ๋ฒ„ํ‚ท
  • ๊ด€๋ฆฌ๋˜๋Š” ํด๋”
  • ๊ฐ์ฒด
Compute Engine
  • ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค(์ „์—ญ ๋ฐ ๋ฆฌ์ „)
  • ๋ฐฉํ™”๋ฒฝ
  • ์ „๋‹ฌ ๊ทœ์น™(์ „์—ญ ๋ฐ ๋ฆฌ์ „)
  • ์ด๋ฏธ์ง€
  • ์ธ์Šคํ„ด์Šค ํ…œํ”Œ๋ฆฟ
  • ์ธ์Šคํ„ด์Šค
  • ์˜๊ตฌ ๋””์Šคํฌ(๋ฆฌ์ „ ๋ฐ ์˜์—ญ)
  • ์Šค๋ƒ…์ƒท
  • ๋Œ€์ƒ HTTP(S) ํ”„๋ก์‹œ(์ „์—ญ ๋ฐ ๋ฆฌ์ „)
  • ๋Œ€์ƒ SSL ํ”„๋ก์‹œ
  • ๋Œ€์ƒ TCP ํ”„๋ก์‹œ
Dataform
  • ์ปดํŒŒ์ผ ๊ฒฐ๊ณผ
  • ์œ„์น˜
  • ์ถœ์‹œ ๊ตฌ์„ฑ
  • ์ €์žฅ์†Œ
  • ์›Œํฌํ”Œ๋กœ ๊ตฌ์„ฑ
  • ์›Œํฌํ”Œ๋กœ ํ˜ธ์ถœ
  • ์ž‘์—…๊ณต๊ฐ„
Google Cloud
  • ์œ„์น˜1
Google Kubernetes Engine
  • ํด๋Ÿฌ์Šคํ„ฐ
Firestore
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
IAP(Identity-Aware Proxy)
  • ๋ชจ๋“  ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ๋ฐ App Engine ์•ฑ
  • ๋ชจ๋“  ํ„ฐ๋„ ๋ฆฌ์†Œ์Šค
  • ๋ชจ๋“  ํ„ฐ๋„ ์˜์—ญ
  • ๋ชจ๋“  ์›น ์„œ๋น„์Šค
  • App Engine ์•ฑ ์„œ๋น„์Šค ๋ฒ„์ „
  • App Engine ์•ฑ ์„œ๋น„์Šค
  • Compute Engine ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค
  • ํ„ฐ๋„ ์ธ์Šคํ„ด์Šค
Integration Connectors
  • ์—ฐ๊ฒฐ
  • ์—ฐ๊ฒฐ ์Šคํ‚ค๋งˆ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
  • ์—”๋“œํฌ์ธํŠธ ์—ฐ๊ฒฐ
  • ์ด๋ฒคํŠธ ๊ตฌ๋…
  • ๊ด€๋ฆฌํ˜• ์˜์—ญ
Apache Kafka์šฉ Google Cloud ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค
  • ํด๋Ÿฌ์Šคํ„ฐ
  • ์†Œ๋น„์ž ๊ทธ๋ฃน
  • ์ž‘์—…
  • ์ฃผ์ œ
Pub/Sub Lite
  • ์œ„์น˜
  • ๊ตฌ๋…
  • ์ฃผ์ œ
Resource Manager
  • ํ”„๋กœ์ ํŠธ
Secret Manager
  • ๋ณด์•ˆ ๋น„๋ฐ€ ๋ฒ„์ „
  • ๋ณด์•ˆ ๋น„๋ฐ€
Spanner
  • ๋ฐฑ์—…
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • ์ธ์Šคํ„ด์Šค

1 Cloud Key Management Service๋Š” ์ด ๋ฆฌ์†Œ์Šค ์œ ํ˜•์„ ํ‚ค๋ง ๋ฆฌ์†Œ์Šค์˜ ์ƒ์œ„ ์š”์†Œ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

resource.name ์†์„ฑ

resource.name ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์˜ ์ „์ฒด ๋˜๋Š” ์ผ๋ถ€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค ์ด๋ฆ„ ํ˜•์‹ ๋ชฉ๋ก์€ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„ ํ˜•์‹์„ ์ฐธ์กฐํ•˜์„ธ์š”.

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

๋‹ค์Œ ์˜ˆ์‹œ๋Š” ์ด ๋™์ž‘์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ ์กฐ๊ฑด์€ Cloud Storage ๋ฒ„ํ‚ท ๋ฐ ๊ฐ์ฒด๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ์œ ํ˜•์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ๋ฒ„ํ‚ท ๋ฐ ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ ์กฐ๊ฑด์€ ๋ฒ„ํ‚ท example-bucket๊ณผ ์—ฌ๊ธฐ์— ํฌํ•จ๋œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

(resource.type != 'storage.googleapis.com/Bucket' &&
 resource.type != 'storage.googleapis.com/Object') ||
resource.name.startsWith('projects/_/buckets/example-bucket')

์กฐ๊ฑด์˜ ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์—์„œ๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ฒ„ํ‚ท ๋˜๋Š” ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค์˜ ์œ ํ˜•์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์— ๊ด€๊ณ„์—†์ด ์ „์ฒด ์กฐ๊ฑด์ด true๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์กฐ๊ฑด์€ resource.service ์†์„ฑ์ด ์•„๋‹Œ resource.type ์†์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. resource.type ์†์„ฑ์„ ํ™•์ธํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • resource.name ๊ฒ€์‚ฌ๋ฅผ ์ ํ•ฉํ•œ ๋ฆฌ์†Œ์Šค ์„ธํŠธ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŠน์ • ์ด๋ฆ„์œผ๋กœ Compute Engine ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด Compute Engine ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ์œ ํ˜•์„ ์ œ์™ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์ดํ›„ ์„œ๋น„์Šค๊ฐ€ ์ƒˆ ๋ฆฌ์†Œ์Šค ์œ ํ˜•์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์กฐ๊ฑด ๋ฒ”์œ„๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์กฐ๊ฑด์—์„œ๋Š” ์—ฐ์‚ฐ์ž์™€ ์ผ์น˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋Œ€์‹  startsWith() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด์—์„œ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„ ์‹œ์ž‘์„ ๋ณด๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„ํ‚ท๊ณผ ํ•ด๋‹น ๋ฒ„ํ‚ท์— ์žˆ๋Š” ๊ฐ์ฒด์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜๊ฐ€ ํ™•์ธ๋˜๋ฉด ๋ฒ„ํ‚ท๊ณผ๋งŒ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

*์™€ ๊ฐ™์€ ์™€์ผ๋“œ ์นด๋“œ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์ผ์น˜์‹œํ‚ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋Œ€์•ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • extract() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์—์„œ ๊ฐ’์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Compute Engine VM ์ธ์Šคํ„ด์Šค์˜ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์—์„œ ํ”„๋กœ์ ํŠธ ID๋ฅผ ์ถ”์ถœํ•œ ํ›„ ์ด ํ”„๋กœ์ ํŠธ ID๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์กฐ๊ฑด ํ‘œํ˜„์‹์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ํŽ˜์ด์ง€์˜ ์†์„ฑ์—์„œ ๊ฐ’ ์ถ”์ถœ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  • startsWith() ๋˜๋Š” endsWith() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์˜ ์‹œ์ž‘์ด๋‚˜ ๋์„ ํ‰๊ฐ€ํ•˜๋Š” ์กฐ๊ฑด์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

resource.name ์†์„ฑ์€ ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ ๋ณ€์ˆ˜ resource.name
์†์„ฑ ์œ ํ˜•

string

๊ฐ ๋ฆฌ์†Œ์Šค ์œ ํ˜•์€ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์— ํŠน์ • ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ˜•์‹ ๋ชฉ๋ก์€ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„ ํ˜•์‹์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ง€์›๋˜๋Š” ํ•จ์ˆ˜ ๋ฐ ์—ฐ์‚ฐ์ž startsWith(), endsWith(), extract(), ,
์„ธ๋ถ€์ •๋ณด

resource.name์€ ์š”์ฒญ์˜ ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์— ์ƒ๋Œ€์  ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋Œ€์  ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์€ ์„ ํ–‰ ์Šฌ๋ž˜์‹œ(/)๊ฐ€ ์—†๋Š” URI ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

startsWith() ํ•จ์ˆ˜๋Š” ์ ‘๋‘์‚ฌ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•˜์—ฌ resource.name์— ๋Œ€ํ•ด ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

endsWith() ํ•จ์ˆ˜๋Š” ์„œํ”ฝ์Šค ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•˜์—ฌ resource.name์— ๋Œ€ํ•ด ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

extract() ํ•จ์ˆ˜๋Š” ์ถ”์ถœ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ resource.name์˜ ์ผ๋ถ€๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ํŽ˜์ด์ง€์˜ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์—์„œ ๊ฐ’ ์ถ”์ถœ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฐ ์—ฐ์‚ฐ์ž๋Š” ์ „์ฒด resource.name ๋˜๋Š” resource.name์˜ ์ถ”์ถœ๋œ ๋ถ€๋ถ„๊ณผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด secret-bucket-123๋ผ๋Š” Cloud Storage ๋ฒ„ํ‚ท์„ ์‹๋ณ„ํ•˜์ง€ ์•Š๋Š” ํ•œ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

resource.name != "projects/_/buckets/secret-bucket-123"

๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด Compute Engine VM ์ธ์Šคํ„ด์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ง€์ •๋œ ์ ‘๋‘์‚ฌ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")

๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด Cloud Storage ๋ฒ„ํ‚ท์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ง€์ •๋œ ์ ‘๋‘์‚ฌ๋กœ ์‹œ์ž‘ํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")

๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด ์ง€์ •๋œ ์ ‘๋ฏธ์‚ฌ๋กœ ๋๋‚˜๋Š” ๊ฒฝ์šฐ(์˜ˆ: Cloud Storage ๊ฐ์ฒด์˜ ํŒŒ์ผ ํ™•์žฅ์ž) true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

resource.name.endsWith(".jpg")

ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ๋˜๋Š” ๋ฒˆํ˜ธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

resource.name.extract("projects/{project}/")
์ง€์›๋˜๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜•
Apigee
  • API ์ œํ’ˆ ์†์„ฑ
  • API ์ œํ’ˆ
  • API ํ”„๋ก์‹œ
  • API ํ”„๋ก์‹œ ํ‚ค-๊ฐ’ ๋งต ํ•ญ๋ชฉ
  • API ํ”„๋ก์‹œ ํ‚ค-๊ฐ’ ๋งต
  • API ํ”„๋ก์‹œ ๋ฒ„์ „
  • ์บ์‹œ
  • ๊ฐœ๋ฐœ์ž ์•ฑ ์†์„ฑ
  • ๊ฐœ๋ฐœ์ž ์•ฑ
  • ๊ฐœ๋ฐœ์ž ์†์„ฑ
  • ๊ฐœ๋ฐœ์ž
  • ํ™˜๊ฒฝ ํ‚ค-๊ฐ’ ๋งต ํ•ญ๋ชฉ
  • ํ™˜๊ฒฝ ํ‚ค-๊ฐ’ ๋งต
  • ๋‚ด๋ณด๋‚ด๊ธฐ
  • ํ๋ฆ„ ํ›„ํฌ
  • ํ‚ค ์ €์žฅ์†Œ ๋ณ„์นญ
  • ํ‚ค ์ €์žฅ์†Œ
  • ์ฟผ๋ฆฌ
  • ์š”๊ธˆ์ œ
  • ์ฐธ์กฐ
  • ๊ณต์œ  ํ๋ฆ„ ๋ฒ„์ „
  • ๊ณต์œ  ํ๋ฆ„
  • ๋Œ€์ƒ ์„œ๋ฒ„
  • Trace(๋””๋ฒ„๊ทธ) ์„ธ์…˜
Application Integration
  • ์ธ์ฆ ๊ตฌ์„ฑ
  • ์‹คํ–‰
  • ํ†ตํ•ฉ ๋ฒ„์ „
  • ํ†ตํ•ฉ
  • ์œ„์น˜
  • ์ •์ง€
Apigee API ํ—ˆ๋ธŒ
  • API
  • API ์ž‘์—…
  • ์ •์˜
  • ๋ฐฐํฌ
  • specs
  • ๋ฒ„์ „
๋ฐฑ์—… ๋ฐ DR ์„œ๋น„์Šค
  • Backup Vault
BigQuery
  • ๋ฐ์ดํ„ฐ ์„ธํŠธ
  • ๋ชจ๋ธ
  • ๋ฃจํ‹ด
  • ํ…Œ์ด๋ธ”
BigQuery Reservation API
  • ํ• ๋‹น
  • BI ์˜ˆ์•ฝ
  • ์šฉ๋Ÿ‰ ์•ฝ์ •
  • ์œ„์น˜
  • ์˜ˆ์•ฝ
Bigtable
  • ํด๋Ÿฌ์Šคํ„ฐ
  • ์ธ์Šคํ„ด์Šค
  • ํ…Œ์ด๋ธ”
Binary Authorization
  • ์ฆ๋ช…์ž
  • ์ง€์†์  ๊ฒ€์ฆ ๊ตฌ์„ฑ
  • ์ •์ฑ…
Cloud Deploy
  • ์ž๋™ํ™” ์‹คํ–‰
  • ์ž๋™ํ™”
  • ์ปค์Šคํ…€ ๋Œ€์ƒ ์œ ํ˜•
  • ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ
  • ์ž‘์—… ์‹คํ–‰
  • ์ถœ์‹œ
  • ์ถœ์‹œ
  • ๋Œ€์ƒ
Cloud Key Management Service
  • Crypto ํ‚ค
  • Crypto ํ‚ค ๋ฒ„์ „
  • ํ‚ค๋ง
Cloud Logging
  • ๋กœ๊ทธ ๋ฒ„ํ‚ท
  • ๋กœ๊ทธ ๋ทฐ
Cloud SQL
  • ๋ฐฑ์—… ์‹คํ–‰
  • ์ธ์Šคํ„ด์Šค
Cloud Storage
  • ๋ฒ„ํ‚ท
  • ๊ด€๋ฆฌ๋˜๋Š” ํด๋”
  • ๊ฐ์ฒด
Compute Engine
  • ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค(์ „์—ญ ๋ฐ ๋ฆฌ์ „)
  • ๋ฐฉํ™”๋ฒฝ
  • ์ „๋‹ฌ ๊ทœ์น™(์ „์—ญ ๋ฐ ๋ฆฌ์ „)
  • ์ด๋ฏธ์ง€
  • ์ธ์Šคํ„ด์Šค ํ…œํ”Œ๋ฆฟ
  • ์ธ์Šคํ„ด์Šค
  • ์˜๊ตฌ ๋””์Šคํฌ(๋ฆฌ์ „ ๋ฐ ์˜์—ญ)
  • ์Šค๋ƒ…์ƒท
  • ๋Œ€์ƒ HTTP(S) ํ”„๋ก์‹œ(์ „์—ญ ๋ฐ ๋ฆฌ์ „)
  • ๋Œ€์ƒ SSL ํ”„๋ก์‹œ
  • ๋Œ€์ƒ TCP ํ”„๋ก์‹œ
Google Kubernetes Engine
  • ํด๋Ÿฌ์Šคํ„ฐ
Firestore
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
Dataform
  • ์ปดํŒŒ์ผ ๊ฒฐ๊ณผ
  • ์œ„์น˜
  • ์ถœ์‹œ ๊ตฌ์„ฑ
  • ์ €์žฅ์†Œ
  • ์›Œํฌํ”Œ๋กœ ๊ตฌ์„ฑ
  • ์›Œํฌํ”Œ๋กœ ํ˜ธ์ถœ
  • ์ž‘์—…๊ณต๊ฐ„
Integration Connectors
  • ์—ฐ๊ฒฐ
  • ์—ฐ๊ฒฐ ์Šคํ‚ค๋งˆ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
  • ์—”๋“œํฌ์ธํŠธ ์—ฐ๊ฒฐ
  • ์ด๋ฒคํŠธ ๊ตฌ๋…
  • ๊ด€๋ฆฌํ˜• ์˜์—ญ
Apache Kafka์šฉ Google Cloud ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค
  • ํด๋Ÿฌ์Šคํ„ฐ
  • ์†Œ๋น„์ž ๊ทธ๋ฃน
  • ์ž‘์—…
  • ์ฃผ์ œ
Pub/Sub Lite
  • ์œ„์น˜
  • ๊ตฌ๋…
  • ์ฃผ์ œ
Secret Manager
  • ๋ณด์•ˆ ๋น„๋ฐ€ ๋ฒ„์ „
  • ๋ณด์•ˆ ๋น„๋ฐ€
Spanner
  • ๋ฐฑ์—…
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • ์ธ์Šคํ„ด์Šค

๋ฆฌ์†Œ์Šค ํƒœ๊ทธ

๋ฆฌ์†Œ์Šค ํƒœ๊ทธ์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์†Œ์Šค์— ์—ฐ๊ฒฐ๋˜๊ฑฐ๋‚˜ ์ƒ์†๋˜๋Š” ํƒœ๊ทธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํƒœ๊ทธ env: prod๊ฐ€ ์—ฐ๊ฒฐ๋œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด์„œ๋งŒ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋Š” ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•œ ์•ก์„ธ์Šค ์ œ์–ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํƒœ๊ทธ ๋ฐ ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ ํƒœ๊ทธ๋Š” ํ‚ค์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ํ‚ค ๋ฐ ๊ฐ’์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์‹๋ณ„์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์˜๊ตฌ ID: ์ „์—ญ์ ์œผ๋กœ ๊ณ ์œ ํ•˜๋ฉฐ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํƒœ๊ทธ ํ‚ค๋Š” ์˜๊ตฌ ID tagKeys/123456789012, ํƒœ๊ทธ ๊ฐ’์€ ์˜๊ตฌ ID tagValues/567890123456๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹‰๋„ค์ž„: ๊ฐ ํ‚ค์˜ ๋‹‰๋„ค์ž„์€ ํ‚ค๊ฐ€ ์ •์˜๋œ ํ”„๋กœ์ ํŠธ๋‚˜ ์กฐ์ง ๋‚ด์—์„œ ๊ณ ์œ ํ•ด์•ผ ํ•˜๋ฉฐ ๊ฐ ๊ฐ’์˜ ๋‹‰๋„ค์ž„์€ ์—ฐ๊ฒฐ๋œ ํ‚ค์— ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํƒœ๊ทธ ํ‚ค์—๋Š” ๋‹‰๋„ค์ž„ env๊ฐ€, ํƒœ๊ทธ ๊ฐ’์—๋Š” ๋‹‰๋„ค์ž„ prod๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋„ค์ž„์ŠคํŽ˜์ด์Šคํ™”๋œ ์ด๋ฆ„: ์กฐ์ง์˜ ์ˆซ์ž ID๋‚˜ ํ”„๋กœ์ ํŠธ ID๋ฅผ ํƒœ๊ทธ ํ‚ค์˜ ๋‹‰๋„ค์ž„์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์กฐ์ง์— ๋งŒ๋“  ํƒœ๊ทธ ํ‚ค์—๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šคํ™”๋œ ์ด๋ฆ„ 123456789012/env๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ์ง ID๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ์กฐ์ง ๋ฆฌ์†Œ์Šค ID ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ํ”„๋กœ์ ํŠธ์— ๋งŒ๋“  ํƒœ๊ทธ ํ‚ค์—๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šคํ™”๋œ ์ด๋ฆ„ myproject/env๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ID๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ํ”„๋กœ์ ํŠธ ์‹๋ณ„์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์กฐ๊ฑด์—์„œ ์‚ฌ์šฉํ•  ์‹๋ณ„์ž ์œ ํ˜•์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํƒœ๊ทธ ์ •์˜ ๋ฐ ์‹๋ณ„์ž๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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

ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ์กฐ๊ฑด์€ ๋‹ค์Œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ
  • ๊ฑฐ๋ถ€ ์ •์ฑ… ๊ฑฐ๋ถ€ ๊ทœ์น™

๋‹ค์Œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒœ๊ทธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ์„ค๋ช…
resource.hasTagKey(
  keyName: string
)
  bool

์š”์ฒญ์˜ ๋ฆฌ์†Œ์Šค์— ์ง€์ •๋œ ํ‚ค๊ฐ€ ์žˆ๋Š” ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํƒœ๊ทธ ํ‚ค๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šคํ™”๋œ ์ด๋ฆ„์œผ๋กœ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค. ์˜๊ตฌ ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒœ๊ทธ ํ‚ค๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด resource.hasTagKeyId() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
keyName: ์กฐ์ง์˜ ์ˆซ์ž ID์™€ ์Šฌ๋ž˜์‹œ๋ฅผ ์ ‘๋‘์‚ฌ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ ํ‚ค์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์˜ˆ: 123456789012/env
์˜ˆ

์š”์ฒญ์˜ ๋ฆฌ์†Œ์Šค์— env ํ‚ค๊ฐ€ ์žˆ๋Š” ํƒœ๊ทธ๊ฐ€ ์žˆ์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

resource.hasTagKey('123456789012/env')
resource.hasTagKeyId(
  keyId: string
)
  bool

์š”์ฒญ์˜ ๋ฆฌ์†Œ์Šค์— ์ง€์ •๋œ ํ‚ค๊ฐ€ ์žˆ๋Š” ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํƒœ๊ทธ ํ‚ค๋Š” ์˜๊ตฌ ID๋กœ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šคํ™”๋œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ํƒœ๊ทธ ํ‚ค๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด resource.hasTagKey() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
keyId: ํƒœ๊ทธ ํ‚ค์˜ ์˜๊ตฌ ID์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด tagKeys/123456789012์ž…๋‹ˆ๋‹ค.
์˜ˆ

์š”์ฒญ์˜ ๋ฆฌ์†Œ์Šค์— tagKeys/123456789012 ํ‚ค๊ฐ€ ์žˆ๋Š” ํƒœ๊ทธ๊ฐ€ ์žˆ์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

resource.hasTagKeyId('tagKeys/123456789012')
resource.matchTag(
  keyName: string,
  valueShortName: string
)
  bool

์š”์ฒญ์˜ ๋ฆฌ์†Œ์Šค์— ์ง€์ •๋œ ํ‚ค ๋ฐ ๊ฐ’์ด ์žˆ๋Š” ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ‚ค๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šคํ™”๋œ ์ด๋ฆ„์œผ๋กœ ์กฐํšŒ๋˜๊ณ  ๊ฐ’์€ ๋‹‰๋„ค์ž„์œผ๋กœ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค. ์˜๊ตฌ ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒœ๊ทธ ํ‚ค ๋ฐ ๊ฐ’์„ ํ™•์ธํ•˜๋ ค๋ฉด resource.matchTagId() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Parameters
  • keyName : ์กฐ์ง์˜ ์ˆซ์ž ID์™€ ์Šฌ๋ž˜์‹œ๋ฅผ ์ ‘๋‘์‚ฌ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ ํ‚ค์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด 123456789012/env์ž…๋‹ˆ๋‹ค.
  • valueShortName: ํƒœ๊ทธ ๊ฐ’์˜ ์งฆ์€ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด prod์ž…๋‹ˆ๋‹ค.
์˜ˆ

์š”์ฒญ์˜ ๋ฆฌ์†Œ์Šค์— 123456789012/env ํ‚ค ๋ฐ prod ๊ฐ’์ด ์žˆ๋Š” ํƒœ๊ทธ๊ฐ€ ์žˆ๋‹ค๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

resource.matchTag('123456789012/env', 'prod')
resource.matchTagId(
  keyId: string,
  valueId: string
)
  bool

์š”์ฒญ์˜ ๋ฆฌ์†Œ์Šค์— ์ง€์ •๋œ ํ‚ค ๋ฐ ๊ฐ’์ด ์žˆ๋Š” ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ‚ค์™€ ๊ฐ’์€ ์˜๊ตฌ ID๋กœ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šคํ™”๋œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ํƒœ๊ทธ ํ‚ค๋ฅผ ํ™•์ธํ•˜๊ณ  ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ํ™•์ธํ•˜๋ ค๋ฉด resource.matchTag() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Parameters
  • keyId: ํƒœ๊ทธ ํ‚ค์˜ ์˜๊ตฌ ID์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด tagKeys/123456789012์ž…๋‹ˆ๋‹ค.
  • valueId: ํƒœ๊ทธ ๊ฐ’์˜ ์˜๊ตฌ ID์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด tagValues/567890123456์ž…๋‹ˆ๋‹ค.
์˜ˆ

์š”์ฒญ์˜ ๋ฆฌ์†Œ์Šค์— tagKeys/123456789012 ํ‚ค ๋ฐ tagValues/567890123456 ๊ฐ’์ด ์žˆ๋Š” ํƒœ๊ทธ๊ฐ€ ์žˆ๋‹ค๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')

์ฃผ ๊ตฌ์„ฑ์› ์†์„ฑ

์ฃผ ๊ตฌ์„ฑ์› ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์š”์ฒญ์„ ์‹คํ–‰ํ•œ ์ฃผ ๊ตฌ์„ฑ์›์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์กฐ๊ฑด์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ •์ฑ…์ด ์‹œํ–‰๋˜๋Š” ์ฃผ ๊ตฌ์„ฑ์›์„ ๋ฏธ์„ธ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ ๊ตฌ์„ฑ์› ์•ก์„ธ์Šค ๊ฒฝ๊ณ„ ์ •์ฑ…์˜ ์ •์ฑ… ๋ฐ”์ธ๋”ฉ์— ์ฃผ ๊ตฌ์„ฑ์› ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

principal.type ์†์„ฑ

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

์ฃผ ๊ตฌ์„ฑ์› ์•ก์„ธ์Šค ๊ฒฝ๊ณ„ ์ •์ฑ…์˜ ์ •์ฑ… ๋ฐ”์ธ๋”ฉ์— ์ฃผ ๊ตฌ์„ฑ์› ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ ๋ณ€์ˆ˜ principal.type
์†์„ฑ ์œ ํ˜•

string

์ง€์›๋˜๋Š” ์—ฐ์‚ฐ์ž , , in
์ง€์›๋˜๋Š” ์ฃผ ๊ตฌ์„ฑ์› ์œ ํ˜•
Google ๊ณ„์ •
iam.googleapis.com/WorkspaceIdentity
์ง์› ID ํ’€ ID
iam.googleapis.com/WorkforcePoolIdentity
์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ํ’€ ID
iam.googleapis.com/WorkloadPoolIdentity
์„œ๋น„์Šค ๊ณ„์ •
iam.googleapis.com/ServiceAccount
์˜ˆ์‹œ

์š”์ฒญ์˜ ์ฃผ ๊ตฌ์„ฑ์›์ด ์„œ๋น„์Šค ๊ณ„์ •์ธ ๊ฒฝ์šฐ true๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

principal.type == "iam.googleapis.com/ServiceAccount"
        

์š”์ฒญ์˜ ์ฃผ ๊ตฌ์„ฑ์›์ด Google Workspace ID ๋˜๋Š” ์ง์› ID ํ’€ ID์ธ ๊ฒฝ์šฐ true๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

principal.type in ["iam.googleapis.com/WorkspaceIdentity", "iam.googleapis.com/WorkforcePoolIdentity"]
        

principal.subject ์†์„ฑ

principal.subject ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์š”์ฒญ์„ ์‹คํ–‰ํ•˜๋Š” ์ฃผ ๊ตฌ์„ฑ์›์„ ๊ธฐ์ค€์œผ๋กœ ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ @example.com์œผ๋กœ ๋๋‚˜๋Š” ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ๋งŒ ์ •์ฑ…์ด ์‹œํ–‰๋˜๋„๋ก ์ฃผ ๊ตฌ์„ฑ์› ์•ก์„ธ์Šค ๊ฒฝ๊ณ„ ์ •์ฑ…์˜ ์ •์ฑ… ๋ฐ”์ธ๋”ฉ์— ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์กฐ๊ฑด์— principal.subject ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ principal.type ์†์„ฑ๋„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด์ด ์ ์šฉ๋˜๋Š” ์ฃผ ๊ตฌ์„ฑ์› ์œ ํ˜•์„ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ฃผ ๊ตฌ์„ฑ์› ์‹๋ณ„์ž๊ฐ€ ์ฃผ ๊ตฌ์„ฑ์› ์œ ํ˜• ๊ฐ„์— ๋ฐ˜๋“œ์‹œ ๊ณ ์œ ํ•˜์ง€๋Š” ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‹๋ณ„์ž example-user@example.com์€ ์ง์› ID ํ’€์˜ Google ๊ณ„์ • ๋˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

principal.subject ์†์„ฑ ์™ธ์— principal.type ์†์„ฑ๋„ ์‚ฌ์šฉํ•˜๋ฉด ์กฐ๊ฑด์ด ์ฃผ ๊ตฌ์„ฑ์›์„ ์˜๋„ํ•œ ์œ ํ˜•๊ณผ๋งŒ ๋งค์นญํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ํ‘œํ˜„์‹์€ ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ @example.com์œผ๋กœ ๋๋‚˜๋Š” Google ๊ณ„์ •๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

principal.type == 'iam.googleapis.com/WorkspaceIdentity' &&
principal.subject.endsWith('@example.com')

์ฃผ ๊ตฌ์„ฑ์› ์•ก์„ธ์Šค ๊ฒฝ๊ณ„ ์ •์ฑ…์˜ ์ •์ฑ… ๋ฐ”์ธ๋”ฉ์— ์ฃผ ๊ตฌ์„ฑ์› ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ ๋ณ€์ˆ˜ principal.subject
์†์„ฑ ์œ ํ˜•

string

์ง€์›๋˜๋Š” ์—ฐ์‚ฐ์ž

, , in, startsWith(), endsWith()

์ง€์›๋˜๋Š” ์ฃผ ๊ตฌ์„ฑ์› ์ฃผ์ฒด
Google ๊ณ„์ •
์‹๋ณ„์ž: ์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ
์ง์› ID ํ’€ ID
์‹๋ณ„์ž: ID์˜ ์ฃผ์ฒด ์†์„ฑ ๊ฐ’
์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ํ’€ ID
์‹๋ณ„์ž: ID์˜ ์ฃผ์ฒด ์†์„ฑ ๊ฐ’
์„œ๋น„์Šค ๊ณ„์ •
์‹๋ณ„์ž: ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ
์˜ˆ

์š”์ฒญ์˜ ์ฃผ ๊ตฌ์„ฑ์›์ด @example.com์œผ๋กœ ๋๋‚˜๋Š” ๊ฒฝ์šฐ true๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

principal.subject.endsWith("@example.com")
        

์š”์ฒญ์˜ ์ฃผ ๊ตฌ์„ฑ์›์ด example-service-account@example-project.iam.gserviceaccount.com์ธ ๊ฒฝ์šฐ true๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

principal.subject == "example-service-account@example-project.iam.gserviceaccount.com"
        

์š”์ฒญ ์†์„ฑ

์š”์ฒญ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ก์„ธ์Šค ์ˆ˜์ค€, ๋‚ ์งœ/์‹œ๊ฐ„, ๋Œ€์ƒ IP ์ฃผ์†Œ ๋ฐ ํฌํŠธ(IAP TCP ํ„ฐ๋„๋ง) ๋˜๋Š” ์˜ˆ์ƒ URL ๊ฒฝ๋กœ/ํ˜ธ์ŠคํŠธ(IAP ๋ฐ Cloud Run)์™€ ๊ฐ™์€ ์š”์ฒญ์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ์กฐ๊ฑด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ก์„ธ์Šค ์ˆ˜์ค€ ์†์„ฑ

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

์•ก์„ธ์Šค ์ˆ˜์ค€ ์†์„ฑ์€ ์›๋ณธ IP ์ฃผ์†Œ, ๊ธฐ๊ธฐ ์†์„ฑ, ์‹œ๊ฐ„ ๋“ฑ ์š”์ฒญ ์†์„ฑ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด fullyTrusted๋ผ๋Š” ์•ก์„ธ์Šค ์ˆ˜์ค€์€ ์š”์ฒญํ•˜๋Š” ๊ธฐ๊ธฐ๊ฐ€ ํšŒ์‚ฌ ์†Œ์œ ์ด๋ฉฐ ํ™”๋ฉด ์ž ๊ธˆ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์š”๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. onNetwork ์•ก์„ธ์Šค ์ˆ˜์ค€์—์„œ ์š”์ฒญํ•˜๋Š” ๊ธฐ๊ธฐ๋Š” ํŠน์ • IP ์ฃผ์†Œ ๋ฒ”์œ„์—์„œ ์‹œ์ž‘ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ์ˆ˜์ค€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Access Context Manager ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์•ก์„ธ์Šค ์ˆ˜์ค€ ์†์„ฑ์€ IAP(Identity-Aware Proxy)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ„ฐ๋„ ์ธ์Šคํ„ด์Šค์— ์•ก์„ธ์Šคํ•˜๊ฑฐ๋‚˜ App Engine ๋˜๋Š” Compute Engine ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์—์„œ ์‹คํ–‰๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์•ก์„ธ์Šคํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” ์•ก์„ธ์Šค ์ˆ˜์ค€ ์†์„ฑ์€ ๋‹ค์Œ ๊ถŒํ•œ ์ค‘ ํ•˜๋‚˜๋ฅผ ํ™•์ธํ•˜๋Š” ์š”์ฒญ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • iap.tunnelInstances.accessViaIAP
  • iap.webServiceVersions.accessViaIAP

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

  • IAP ๋ณด์•ˆ ํ„ฐ๋„ ์‚ฌ์šฉ์ž(roles/iap.tunnelResourceAccessor)

    ๋‹จ์ผ ๊ถŒํ•œ iap.tunnelInstances.accessViaIAP์ด(๊ฐ€) ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • IAP ๋ณด์•ˆ ์›น ์•ฑ ์‚ฌ์šฉ์ž(roles/iap.httpsResourceAccessor)

    ๋‹จ์ผ ๊ถŒํ•œ iap.webServiceVersions.accessViaIAP์ด(๊ฐ€) ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์•ก์„ธ์Šค ์ˆ˜์ค€ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์ด ํฌํ•จ๋œ ์ปค์Šคํ…€ ์—ญํ• ์„ ์กฐ๊ฑด๋ถ€๋กœ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค์Šคํ…€ ์—ญํ• ์—๋Š” ๋‹ค๋ฅธ ๊ถŒํ•œ์ด ํฌํ•จ๋˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

request.auth.access_levels ์†์„ฑ

์†์„ฑ ๋ณ€์ˆ˜ request.auth.access_levels
์†์„ฑ ์œ ํ˜• list<string>
์ง€์›๋˜๋Š” ์—ฐ์‚ฐ์ž in
์„ธ๋ถ€์ •๋ณด

์š”์ฒญ์ด ํŠน์ • ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด in ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ACCESS_LEVEL_FULL_NAME in request.auth.access_levels

์•ก์„ธ์Šค ์ˆ˜์ค€์˜ ์ „์ฒด ์ด๋ฆ„์—๋Š” ๋‹ค์Œ ํ˜•์‹์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

accessPolicies/POLICY_NUMBER/accessLevels/ACCESS_LEVEL
์˜ˆ

์š”์ฒญ์ด CorpNet ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ์ถฉ์กฑํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

"accessPolicies/199923665455/accessLevels/CorpNet"
    in request.auth.access_levels
์ง€์›๋˜๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜• IAP(Identity-Aware Proxy)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ„ฐ๋„ ์ธ์Šคํ„ด์Šค, ํ„ฐ๋„ ๋Œ€์ƒ ๊ทธ๋ฃน, Google Cloud ๋ถ€ํ•˜ ๋ถ„์‚ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” App Engine์—์„œ ์‹คํ–‰๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์•ก์„ธ์Šคํ•˜๋Š” ์š”์ฒญ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

API ์†์„ฑ

API ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ •Google Cloud API ๋˜๋Š” ์„œ๋น„์Šค์—์„œ ์ œ๊ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•ก์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ API ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Cloud Storage๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ„ํ‚ท์˜ ๊ฐ์ฒด๋ฅผ ๋‚˜์—ดํ•  ๊ฒฝ์šฐ ์š”์ฒญ์— prefix ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฆ„์ด ํŠน์ • ์ ‘๋‘์‚ฌ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ์ฒด๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ์•ก์„ธ์Šค ๊ฒฝ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ๊ธฐ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋ฒ”์œ„๋ฅผ ์ค„์ด๋ ค๋ฉด API ์†์„ฑ storage.googleapis.com/objectListPrefix๋ฅผ ํ™•์ธํ•˜์—ฌ ๊ฐ์ฒด ๋‚˜์—ด์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ์ œํ•œํ•˜๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ์•ก์„ธ์Šค ๊ฒฝ๊ณ„๋ฅผ ๋งŒ๋“ค๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด API ์†์„ฑ์—๋Š” ์š”์ฒญ์˜ prefix ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์กฐ๊ฑด์—์„œ API ์†์„ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ผ๋ถ€ ์„œ๋น„์Šค๋Š” API ์†์„ฑ์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์„น์…˜์€ ๊ฐ API ์†์„ฑ์„ ์ธ์‹ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

API ์†์„ฑ์šฉ ํ•จ์ˆ˜

๋‹ค์Œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด API ์†์„ฑ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ์„ค๋ช…
api.getAttribute(
  attributeName: string,
  defaultValue: V<T>
)
  V<T>

์š”์ฒญ๋œ API ์†์„ฑ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

Parameters
  • attributeName: ๊ฐ€์ ธ์˜ฌ API ์†์„ฑ์ž…๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๊ฐ’์€ ์ด ํŽ˜์ด์ง€์˜ Cloud Storage API ์†์„ฑ ๋ฐ IAM API ์†์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • defaultValue: API ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•  ๊ธฐ๋ณธ๊ฐ’(V)์ž…๋‹ˆ๋‹ค. ๊ฐ’ V๋Š” T ์œ ํ˜•์ด๋ฉฐ, T๋Š” API ์†์„ฑ์˜ ๊ฐ’๊ณผ ๋™์ผํ•œ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด API ์†์„ฑ ๊ฐ’์ด ๋ฌธ์ž์—ด์ด๋ฉด ๋นˆ ๋ฌธ์ž์—ด ๋˜๋Š” undefined์™€ ๊ฐ™์€ ์ž๋ฆฌํ‘œ์‹œ์ž ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ

๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ์—ญํ•  ๋ถ€์—ฌ ๋˜๋Š” ์ทจ์†Œ ์š”์ฒญ์˜ ๊ฒฝ์šฐ ์š”์ฒญ์— ์˜ํ•ด ์ˆ˜์ •๋œ ์—ญํ•  ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ๋ชจ๋“  ์œ ํ˜•์˜ ์š”์ฒญ์˜ ๊ฒฝ์šฐ ๋นˆ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
api.getAttribute("iam.googleapis.com/modifiedGrantsByRole", [])
hasOnly(
  items: list<T>
)
  bool

๋ชฉ๋ก์— ํ—ˆ์šฉ๋œ ํ•ญ๋ชฉ ๋˜๋Š” ์ด๋Ÿฌํ•œ ํ•ญ๋ชฉ์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. api.getAttribute()์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ๋ชฉ๋ก์—์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
items: ์œ ํ˜•์ด T์ธ ํ•ญ๋ชฉ์˜ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ๊ฐ ํ•ญ๋ชฉ์€ API ์†์„ฑ์„ ํฌํ•จํ•˜๋„๋ก ํ—ˆ์šฉ๋œ ๊ฐ’์ž…๋‹ˆ๋‹ค.
์˜ˆ

์š”์ฒญ์ด Pub/Sub ํŽธ์ง‘์ž(roles/pubsub.editor) ๋˜๋Š” Pub/Sub ๊ฒŒ์‹œ์ž(roles/pubsub.publisher) ์ด์™ธ์˜ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ์ทจ์†Œํ• ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', [])
    .hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

๋‹ค์Œ์€ ๋‹ค์–‘ํ•œ ์š”์ฒญ ๊ฐ’์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๋ถ€์—ฌ/์ทจ์†Œ๋œ ์—ญํ•  ๊ฒฐ๊ณผ
์—†์Œ

true

์ˆ˜์ •๋œ ์—ญํ• ์ด ์—†์œผ๋ฉด api.getAttribute()๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์†์„ฑ์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์ด ํ•ญ์ƒ ๋นˆ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋นˆ ๋ชฉ๋ก์€ ํ—ˆ์šฉ ๋ชฉ๋ก์— ์—†๋Š” ๊ฐ’์„ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

roles/pubsub.editor

true

์—ญํ• ์ด ํ—ˆ์šฉ ๋ชฉ๋ก์— ์žˆ์Šต๋‹ˆ๋‹ค.

roles/pubsub.editor
roles/pubsub.publisher

true

๋‘ ์—ญํ•  ๋ชจ๋‘ ํ—ˆ์šฉ ๋ชฉ๋ก์— ์žˆ์Šต๋‹ˆ๋‹ค.

roles/billing.admin

false

์—ญํ• ์ด ํ—ˆ์šฉ ๋ชฉ๋ก์— ์žˆ์Šต๋‹ˆ๋‹ค.

roles/billing.admin
roles/pubsub.editor

false

ํ•œ ์—ญํ• ์€ ํ—ˆ์šฉ ๋ชฉ๋ก์— ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์—ญํ• ์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Cloud Storage API ์†์„ฑ

Cloud Storage๋Š” ๋‹ค์Œ API ์†์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ๋ณ€์ˆ˜ storage.googleapis.com/objectListPrefix
์†์„ฑ ์œ ํ˜• string
์„ธ๋ถ€์ •๋ณด

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

๋‹ค๋ฅธ ์œ ํ˜•์˜ ์š”์ฒญ์—์„œ๋Š” ์ด ์†์„ฑ์ด ์ •์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์†์„ฑ์„ ์ธ์‹ํ•˜๋Š” ์„œ๋น„์Šค: Cloud Storage

IAM API ์†์„ฑ

IAM์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ API ์†์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ๋ณ€์ˆ˜ iam.googleapis.com/modifiedGrantsByRole
์†์„ฑ ์œ ํ˜• list<string>
์„ธ๋ถ€์ •๋ณด

๋ฆฌ์†Œ์Šค์˜ ํ—ˆ์šฉ ์ •์ฑ…์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์š”์ฒญ์˜ ๊ฒฝ์šฐ ์ด ์†์„ฑ์—๋Š” ์š”์ฒญ์ด ์ˆ˜์ •ํ•˜๋Š” ๊ฒฐํ•ฉ์˜ ์—ญํ•  ์ด๋ฆ„์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์œ ํ˜•์˜ ์š”์ฒญ์—์„œ๋Š” ์ด ์†์„ฑ์ด ์ •์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์†์„ฑ์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜•

๋‹ค์Œ ๋ฆฌ์†Œ์Šค ์œ ํ˜•์€ ํ•ด๋‹น ํ—ˆ์šฉ ์ •์ฑ…์—์„œ modifiedGrantsByRole ์†์„ฑ์˜ ์กฐ๊ฑด์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ํ”„๋กœ์ ํŠธ
  • ํด๋”
  • ์กฐ์ง
์ด ์†์„ฑ์„ ์ธ์‹ํ•˜๋Š” ์„œ๋น„์Šค:

๋‹ค์Œ ์„œ๋น„์Šค๋Š” modifiedGrantsByRole ์†์„ฑ์„ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.

  • API ๊ฒŒ์ดํŠธ์›จ์ด
  • AutoML
  • Certificate Authority Service
  • Cloud Run Functions
  • Cloud Healthcare API
  • Cloud Key Management Service
  • Cloud Run
  • Cloud Runtime Configuration API
  • Cloud Storage
  • Compute Engine
  • Artifact Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • IAP(Identity-Aware Proxy)
  • Microsoft Active Directory์šฉ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค
  • ์‚ฌ์šฉ์ž ๊ด€๋ฆฌํ˜• ๋…ธํŠธ๋ถ
  • Resource Manager
  • Secret Manager
  • ์„œ๋น„์Šค ๊ด€๋ฆฌ

๋‚ ์งœ/์‹œ๊ฐ„ ์†์„ฑ

๋‚ ์งœ/์‹œ๊ฐ„ ์†์„ฑ์€ Google Cloud ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋งŒ๋ฃŒ, ์˜ˆ์•ฝ, ๊ธฐ๊ฐ„ ์ œํ•œ ์•ก์„ธ์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ ๋‚ ์งœ/์‹œ๊ฐ„ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์†์„ฑ์€ ๋ชจ๋“  Google Cloud ์„œ๋น„์Šค ๋ฐ ๋ฆฌ์†Œ์Šค ์œ ํ˜•์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ง์ ‘ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ฆฌ์†Œ์Šค์— ๋‚ ์งœ/์‹œ๊ฐ„ ์กฐ๊ฑด์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด ํŽ˜์ด์ง€์˜ ์ƒ์†๋œ ์กฐ๊ฑด ์ง€์›์„ ์ฐธ์กฐํ•˜์„ธ์š”.

request.time ์†์„ฑ์—๋Š” ์š”์ฒญ์˜ ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋‹ค๋ฅธ ํƒ€์ž„์Šคํƒฌํ”„ ๋˜๋Š” ๊ธฐ๊ฐ„๊ณผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์„น์…˜์—๋Š” ํƒ€์ž„์Šคํƒฌํ”„ ๋ฐ ๊ธฐ๊ฐ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๊ฐ€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒ€์ž„์Šคํƒฌํ”„ ๋ฐ ๊ธฐ๊ฐ„ ๋งŒ๋“ค๊ธฐ, ๋น„๊ต, ์ˆ˜์ •

ํ•จ์ˆ˜ ๋˜๋Š” ์—ฐ์‚ฐ์ž ์„ค๋ช…
date(
  value: string
)
  Timestamp

๋‚ ์งœ๋ฅผ string์—์„œ Timestamp๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
value: YYYY-MM-DD ํ˜•์‹์˜ ๋‚ ์งœ์—์„œ YYYY๋Š” ์—ฐ๋„, MM๋Š” ๋‘ ์ž๋ฆฌ ์›”, DD๋Š” ๋‘ ์ž๋ฆฌ ์ผ์ž…๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ Timestamp์—๋Š” ์ง€์ •๋œ ๋‚ ์งœ์™€ ์‹œ๊ฐ„(00:00:00.000 UTC)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
์˜ˆ

๋‚ ์งœ 2023-02-01์™€ ์‹œ๊ฐ„ 00:00:00.000 UTC๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” Timestamp๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

date("2023-02-01")
duration(
  value: string
)
  Duration

์‹œ๊ฐ„์„ string์—์„œ Duration์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
value: ์ดˆ ๋‹จ์œ„์˜ Duration ๋’ค์— s๊ฐ€ ์˜ต๋‹ˆ๋‹ค.
์˜ˆ์‹œ

1.5๋ถ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ธฐ๊ฐ„์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

duration("90s")

30์ผ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ธฐ๊ฐ„์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

duration("2592000s")
timestamp(
  value: string
)
  Timestamp

string์„ Timestamp์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜

value: RFC 3339๋ฅผ ์ค€์ˆ˜ํ•˜๋Š” UTC ํƒ€์ž„์Šคํƒฌํ”„์ž…๋‹ˆ๋‹ค.

์˜ˆ

2023๋…„ 4์›” 12์ผ 23:20:50.52(UTC)๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

timestamp("2023-04-12T23:20:50.52Z")
, , ,

๋‘ ๊ฐœ์˜ Timestamp ๊ฐ’์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

์š”์ฒญ ์‹œ๊ฐ„์ด 2022๋…„ 4์›” 12์ผ 00:00:00 UTC ์ด์ „(ํ•ด๋‹น ์‹œ์  ๋ถˆํฌํ•จ)์ธ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.time < timestamp("2022-04-12T00:00:00.00Z")

์š”์ฒญ ์‹œ๊ฐ„์ด 2022๋…„ 4์›” 12์ผ 00:00:00 UTC ์ด์ „(ํ•ด๋‹น ์‹œ์  ํฌํ•จ)์ธ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.time <= timestamp("2022-04-12T00:00:00.00Z")

์š”์ฒญ ์‹œ๊ฐ„์ด 2022๋…„ 4์›” 12์ผ 00:00:00 UTC ์ดํ›„(ํ•ด๋‹น ์‹œ์  ๋ถˆํฌํ•จ)์ธ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.time > timestamp("2022-04-12T00:00:00.00Z")

์š”์ฒญ ์‹œ๊ฐ„์ด 2022๋…„ 4์›” 12์ผ 00:00:00 UTC ์ดํ›„(ํ•ด๋‹น ์‹œ์  ํฌํ•จ)์ธ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.time >= timestamp("2022-04-12T00:00:00.00Z")
  • timestamp + duration   Timestamp
  • timestamp - duration   Timestamp

Timestamp์—์„œ Duration์„ ๋”ํ•˜๊ฑฐ๋‚˜ ๋บ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

2024๋…„ 4์›” 12์ผ 14:30:00 UTC์—์„œ 30๋ถ„ ํ›„์— ํ•ด๋‹นํ•˜๋Š” Timestamp๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

timestamp("2024-04-12T14:30:00.00Z") + duration("1800s")

2024๋…„ 4์›” 12์ผ 14:30:00 UTC์—์„œ 60์ผ ์ „์— ํ•ด๋‹นํ•˜๋Š” Timestamp๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

timestamp("2024-04-12T14:30:00.00Z") - duration("5184000s")

ํƒ€์ž„์Šคํƒฌํ”„์—์„œ ์ •๋ณด ์ถ”์ถœ

์ด ์„น์…˜์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํƒ€์ž„์Šคํƒฌํ”„์— ํ•ด๋‹นํ•˜๋Š” ์š”์ผ๊ณผ ๊ฐ™์ด ํƒ€์ž„์Šคํƒฌํ”„์—์„œ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‹ค๋ฅธ ์‹œ๊ฐ„๋Œ€๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด ํ•ด๋‹น ์‹œ๊ฐ„๋Œ€๋ฅผ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. IETF ์‹œ๊ฐ„๋Œ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„ ๋˜๋Š” UTC ์˜คํ”„์…‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ค‘๋ถ€ ์œ ๋Ÿฝ ํ‘œ์ค€์‹œ(CET)์— Europe/Berlin ๋˜๋Š” +01:00์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์›๋˜๋Š” ํ•จ์ˆ˜ ๋ฐ ์—ฐ์‚ฐ์ž ์„ค๋ช…
Timestamp.getDate(
  timeZone: string
)
  int

Timestamp์—์„œ ์›”์ค‘ ๋‚ ์งœ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ 1 ๊ธฐ์ค€ ์ƒ‰์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ•œ ๋‹ฌ์˜ ์ฒซ ๋‚ ์€ 1์ž…๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
timeZone: ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•  ์‹œ๊ฐ„๋Œ€์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ UTC์ž…๋‹ˆ๋‹ค.
์˜ˆ

ํ•ด๋‹น ์›”์˜ 15์ผ(UTC) ํ›„์— ์š”์ฒญ์ด ์ „์†ก๋˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.time.getDate() > 15
Timestamp.getDayOfMonth(
  timeZone: string
)
  int

Timestamp์—์„œ ์›”์ค‘ ๋‚ ์งœ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ 0 ๊ธฐ์ค€ ์ƒ‰์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ•œ ๋‹ฌ์˜ ์ฒซ ๋‚ ์€ 0์ž…๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
timeZone: ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•  ์‹œ๊ฐ„๋Œ€์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ UTC์ž…๋‹ˆ๋‹ค.
์˜ˆ

ํ•ด๋‹น ์›”์˜ 15์ผ(UTC) ํ›„์— ์š”์ฒญ์ด ์ „์†ก๋˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.time.getDayOfMonth() > 14
Timestamp.getDayOfWeek(
  timeZone: string
)
  int

Timestamp์—์„œ ์š”์ผ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ 0 ๊ธฐ์ค€ ์ƒ‰์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ผ์š”์ผ์€ 0์ž…๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
timeZone: ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•  ์‹œ๊ฐ„๋Œ€์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ UTC์ž…๋‹ˆ๋‹ค.
์˜ˆ

๋…์ผ ๋ฒ ๋ฅผ๋ฆฐ์—์„œ ์›”์š”์ผ๊ณผ ๊ธˆ์š”์ผ ์‚ฌ์ด์— ์š”์ฒญ์ด ์ „์†ก๋˜๋Š” ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.time.getDayOfWeek("Europe/Berlin") > 0 &&
    request.time.getDayOfWeek("Europe/Berlin") < 6
Timestamp.getDayOfYear(
  timeZone: string
)
  int

Timestamp์—์„œ ์—ฐ์ค‘ ๋‚ ์งœ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ 0 ๊ธฐ์ค€ ์ƒ‰์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ทธ ํ•ด์˜ ์ฒซ ๋ฒˆ์งธ ๋‚ ์€ 0์ž…๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
timeZone: ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•  ์‹œ๊ฐ„๋Œ€์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ UTC์ž…๋‹ˆ๋‹ค.
์˜ˆ

1๋…„ ์ค‘ ์ฒซ 5์ผ ๋™์•ˆ ์บ˜๋ฆฌํฌ๋‹ˆ์•„์ฃผ ๋งˆ์šดํ‹ด๋ทฐ์—์„œ ์š”์ฒญ์ด ์ „์†ก๋˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.time.getDayOfYear("America/Los_Angeles") >= 0 &&
    request.time.getDayOfYear("America/Los_Angeles") < 5
Timestamp.getFullYear(
  timeZone: string
)
  int

Timestamp์—์„œ ์—ฐ๋„๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
timeZone: ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•  ์‹œ๊ฐ„๋Œ€์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ UTC์ž…๋‹ˆ๋‹ค.
์˜ˆ

2023๋…„ ๋™์•ˆ ์บ˜๋ฆฌํฌ๋‹ˆ์•„์ฃผ ๋งˆ์šดํ‹ด๋ทฐ์—์„œ ์š”์ฒญ์ด ์ „์†ก๋œ ๊ฒฝ์šฐ true๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

request.time.getFullYear("America/Los_Angeles") == 2023

์š”์ฒญ์ด UTC๋กœ 2022๋…„ ์ค‘์— ์ „์†ก๋œ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.time.getFullYear() == 2022
Timestamp.getHours(
  timeZone: string
)
  int

Timestamp์—์„œ ์‹œ๊ฐ„์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ 0 ๊ธฐ์ค€ ์ƒ‰์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์˜ ๋ฒ”์œ„๋Š” 0~23์ž…๋‹ˆ๋‹ค.

์ด ํ•จ์ˆ˜๋ฅผ getDayofWeek()์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ด€ํ• ๊ถŒ์—์„œ ํ—ˆ์šฉ๋˜๋Š” ๊ทผ๋ฌด ์‹œ๊ฐ„ ๋™์•ˆ์—๋งŒ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
timeZone: ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•  ์‹œ๊ฐ„๋Œ€์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ UTC์ž…๋‹ˆ๋‹ค.
์˜ˆ

๋…์ผ ๋ฒ ๋ฅผ๋ฆฐ ์‹œ๊ฐ„์œผ๋กœ ํ‰์ผ 09:00(์˜ค์ „ 9์‹œ)๋ถ€ํ„ฐ 17:00(์˜คํ›„ 5์‹œ) ์‚ฌ์ด์— ์š”์ฒญ์ด ์ „์†ก๋˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
    request.time.getDayOfWeek("Europe/Berlin") <= 5 &&
    request.time.getHours("Europe/Berlin") >= 9 &&
    request.time.getHours("Europe/Berlin") <= 17
Timestamp.getMilliseconds(
  timeZone: string
)
  int

Timestamp์—์„œ ๋ฐ€๋ฆฌ์ดˆ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ 0 ๊ธฐ์ค€ ์ƒ‰์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์˜ ๋ฒ”์œ„๋Š” 0~999์ž…๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
timeZone: ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•  ์‹œ๊ฐ„๋Œ€์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ UTC์ž…๋‹ˆ๋‹ค.
Timestamp.getMinutes(
  timeZone: string
)
  int

Timestamp์—์„œ ์‹œ๊ฐ„ ๋‹ค์Œ์˜ ๋ถ„์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ 0 ๊ธฐ์ค€ ์ƒ‰์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์˜ ๋ฒ”์œ„๋Š” 0~59์ž…๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
timeZone: ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•  ์‹œ๊ฐ„๋Œ€์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ UTC์ž…๋‹ˆ๋‹ค.
์˜ˆ

๋…์ผ ๋ฒ ๋ฅผ๋ฆฐ ์‹œ๊ฐ„์œผ๋กœ 09:30(์˜ค์ „ 9์‹œ 30๋ถ„) ๋˜๋Š” ๊ทธ ์ดํ›„์— ์š”์ฒญ์ด ์ „์†ก๋˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.time.getHours("Europe/Berlin") >= 9 &&
    request.time.getMinutes("Europe/Berlin") >= 30
Timestamp.getMonth(
  timeZone: string
)
  int

Timestamp์—์„œ ์—ฐ์ค‘ ํ•ด๋‹น ์›”์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ 0 ๊ธฐ์ค€ ์ƒ‰์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์˜ ๋ฒ”์œ„๋Š” 0~11์ž…๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
timeZone: ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•  ์‹œ๊ฐ„๋Œ€์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ UTC์ž…๋‹ˆ๋‹ค.
์˜ˆ

4์›”์— ์บ˜๋ฆฌํฌ๋‹ˆ์•„์ฃผ ๋งˆ์šดํ‹ด๋ทฐ์—์„œ ์š”์ฒญ์ด ์ „์†ก๋œ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.time.getMonth("America/Los_Angeles") == 3
Timestamp.getSeconds(
  timeZone: string
)
  int

Timestamp์—์„œ ์ดˆ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ 0 ๊ธฐ์ค€ ์ƒ‰์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์˜ ๋ฒ”์œ„๋Š” 0~59์ž…๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
timeZone: ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•  ์‹œ๊ฐ„๋Œ€์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ UTC์ž…๋‹ˆ๋‹ค.
, , ,

์ด ํ‘œ์—์„œ ๋‘ ํ•จ์ˆ˜์˜ ์ถœ๋ ฅ์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์ƒ IP/ํฌํŠธ ์†์„ฑ

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

์˜ˆ๋ฅผ ๋“ค์–ด Compute Engine VM ์ธ์Šคํ„ด์Šค๋Š” ์™ธ๋ถ€ IP ์ฃผ์†Œ ๋ฐ ํฌํŠธ 132.168.42.21:3001์„ ๋‚ด๋ถ€ IP ์ฃผ์†Œ์— ๋งคํ•‘ํ•˜๊ณ  ํฌํŠธ 10.0.0.1:2300์„ ์ผ๋ฐ˜์ ์ธ ์šฉ๋„์— ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋‚ด๋ถ€ IP ์ฃผ์†Œ์™€ ํฌํŠธ 10.0.0.1:22๋Š” ๊ด€๋ฆฌ ์šฉ๋„๋กœ๋งŒ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์ƒ IP/ํฌํŠธ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๋ถ€ IP ์ฃผ์†Œ ๋ฐ ํฌํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์–‘ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TCP ์ „๋‹ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ IAP(Identity-Aware Proxy) ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋Œ€์ƒ.ip ์†์„ฑ

์†์„ฑ ๋ณ€์ˆ˜ destination.ip
์†์„ฑ ์œ ํ˜• string
์ง€์›๋˜๋Š” ์—ฐ์‚ฐ์ž ,
์„ธ๋ถ€์ •๋ณด

๋ณ€์ˆ˜ destination.ip๋Š” IPv4 ํ˜•์‹์˜ ๋‚ด๋ถ€ IP ์ฃผ์†Œ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

๋Œ€์ƒ IP ์ฃผ์†Œ๊ฐ€ 10.0.0.1์ด๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

destination.ip == "10.0.0.1"

๋Œ€์ƒ IP ์ฃผ์†Œ๊ฐ€ 10.0.0.1์ด ์•„๋‹ˆ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

destination.ip != "10.0.0.1"
์ง€์›๋˜๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜• IAP(Identity-Aware Proxy)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ„ฐ๋„ ์ธ์Šคํ„ด์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

destination.port ์†์„ฑ

์†์„ฑ ๋ณ€์ˆ˜ destination.port
์†์„ฑ ์œ ํ˜• int
์ง€์›๋˜๋Š” ์—ฐ์‚ฐ์ž , , , , ,
์„ธ๋ถ€์ •๋ณด

destination.port ๋ณ€์ˆ˜๋Š” ๋‚ด๋ถ€ TCP ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

๋ชฉ์ ์ง€ ํฌํŠธ๊ฐ€ 21์ด๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

destination.port == 21

๋ชฉ์ ์ง€ ํฌํŠธ๊ฐ€ 3001๋ณด๋‹ค ์ž‘์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

destination.port < 3001
์ง€์›๋˜๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜• IAP(Identity-Aware Proxy)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ„ฐ๋„ ์ธ์Šคํ„ด์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „๋‹ฌ ๊ทœ์น™ ์†์„ฑ

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

Cloud Load Balancing์˜ ๊ฒฝ์šฐ ์ „๋‹ฌ ๊ทœ์น™ ์†์„ฑ์€ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค, ๋Œ€์ƒ ํ”„๋ก์‹œ, ์ƒํƒœ ์ ๊ฒ€, URL ๋งต๊ณผ ๊ฐ™์€ Google Cloud ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ง€์›๋˜๋Š” ํ•จ์ˆ˜

ํ•จ์ˆ˜ ์„ค๋ช…
compute.isForwardingRuleCreationOperation()   bool

์š”์ฒญ์ด ์ „๋‹ฌ ๊ทœ์น™์„ ๋งŒ๋“œ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ
compute.matchLoadBalancingSchemes()์˜ ์˜ˆ์‹œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
compute.matchLoadBalancingSchemes(
  schemes: list<string>
)
  bool

์š”์ฒญ์ด ์ง€์ •๋œ ์œ ํ˜•์˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์Šคํ‚ค๋งˆ ์ค‘ ํ•˜๋‚˜์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์Šคํ‚ค๋งˆ์˜ ์‹๋ณ„์ž์™€ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Google Cloud ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—์„œ IAM ์กฐ๊ฑด ์‚ฌ์šฉ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋งค๊ฐœ๋ณ€์ˆ˜
schemes: ์š”์ฒญ์ด ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์Šคํ‚ค๋งˆ์ž…๋‹ˆ๋‹ค.
์˜ˆ

๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ์š”์ฒญ์ด ์ „๋‹ฌ ๊ทœ์น™์„ ๋งŒ๋“ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์š”์ฒญ์ด ์ „๋‹ฌ ๊ทœ์น™์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ ์ „๋‹ฌ ๊ทœ์น™์ด INTERNAL, INTERNAL_MANAGED ๋˜๋Š” INTERNAL_SELF_MANAGED ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์Šคํ‚ค๋งˆ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒฝ์šฐ์—๋งŒ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
!compute.isForwardingRuleCreationOperation() || (
  compute.isForwardingRuleCreationOperation() &&
  compute.matchLoadBalancingSchemes([
    'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
  ])
)

์ง€์›๋˜๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜•

์ด ์†์„ฑ์€ ๋‹ค์Œ ๋ฆฌ์†Œ์Šค ์œ ํ˜•์„ ๋งŒ๋“œ๋Š” ์š”์ฒญ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๋ฆฌ์†Œ์Šค ์œ ํ˜•
Cloud Load Balancing ์ „๋‹ฌ ๊ทœ์น™
Cloud VPN ์ „๋‹ฌ ๊ทœ์น™(์ „์—ญ ๋ฐ ๋ฆฌ์ „)
Compute Engine ์ „๋‹ฌ ๊ทœ์น™(ํ”„๋กœํ† ์ฝœ ์ „๋‹ฌ)
Cloud Service Mesh1 ์ „๋‹ฌ ๊ทœ์น™

1 Compute Engine์˜ ๋ฆฌ์†Œ์Šค ์†์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

URL ๊ฒฝ๋กœ/ํ˜ธ์ŠคํŠธ ์†์„ฑ

URL ๊ฒฝ๋กœ ๋ฐ ํ˜ธ์ŠคํŠธ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์š”์ฒญ์˜ URL ๊ฒฝ๋กœ ๋˜๋Š” ํ˜ธ์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•ก์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ https://example.com์€ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๋„๋ฉ”์ธ์ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ง€์ •ํ•˜๊ณ  https://hr.example.com/admin์€ ์ธ์‚ฌ ๊ด€๋ฆฌ ๋‹ด๋‹น์ž๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŽ˜์ด์ง€์— ์•ก์„ธ์Šคํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋„๋ก ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ—ˆ์šฉ ์ •์ฑ… ์—ญํ•  ๋ฐ”์ธ๋”ฉ์—์„œ URL ๊ฒฝ๋กœ/ํ˜ธ์ŠคํŠธ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

request.path ์†์„ฑ

์†์„ฑ ๋ณ€์ˆ˜ request.path
์†์„ฑ ์œ ํ˜• string
์ง€์›๋˜๋Š” ํ•จ์ˆ˜ ๋ฐ ์—ฐ์‚ฐ์ž , startsWith(), endsWith()
์„ธ๋ถ€์ •๋ณด ์ด ์†์„ฑ์—๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. request.path != "/admin"๊ณผ ๊ฐ™์ด ๋ถ€๋“ฑ์„ ํ™•์ธํ•˜๋Š” ๋Œ€์‹  !request.path.startsWith("/admin")์™€ ๊ฐ™์ด ์†์„ฑ์˜ ์ ‘๋‘์‚ฌ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ์ ‘๋‘์‚ฌ๋ฅผ ํ™•์ธํ•˜์—ฌ /admin ๊ณ„์ธต ๊ตฌ์กฐ ๋‚ด์—์„œ URL ๊ฒฝ๋กœ(์˜ˆ: /admin/payroll/)๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ์‹œ

์š”์ฒญ ๊ฒฝ๋กœ๊ฐ€ ์ง€์ •๋œ URL ๊ฒฝ๋กœ์™€ ๋™์ผํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.path == "/admin"
request.path == "/admin/payroll"

์š”์ฒญ ๊ฒฝ๋กœ๊ฐ€ ์ง€์ •๋œ URL ๊ฒฝ๋กœ๋กœ ์‹œ์ž‘๋˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.path.startsWith("/admin")

์š”์ฒญ ๊ฒฝ๋กœ๊ฐ€ ์ง€์ •๋œ URL ๊ฒฝ๋กœ๋กœ ๋๋‚˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.path.endsWith("/payroll.js")
์ง€์›๋˜๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜•
  • IAP(Identity-Aware Proxy) ์•ฑ ์„œ๋น„์Šค ๋ฒ„์ „(App Engine): IAP(Identity-Aware Proxy)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ App Engine ๋˜๋Š” Compute Engine์—์„œ ์‹คํ–‰๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์•ก์„ธ์Šคํ•˜๋Š” ์š”์ฒญ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Cloud Run ์„œ๋น„์Šค

request.host ์†์„ฑ

์†์„ฑ ๋ณ€์ˆ˜ request.host
์†์„ฑ ์œ ํ˜• string
์ง€์›๋˜๋Š” ํ•จ์ˆ˜ ๋ฐ ์—ฐ์‚ฐ์ž , endsWith()
์„ธ๋ถ€์ •๋ณด ์ด ์†์„ฑ์—๋Š” .startsWith() ํ•จ์ˆ˜๋‚˜ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ•จ์ˆ˜์™€ ์—ฐ์‚ฐ์ž๋Š” ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ์‹œ

ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด ์ง€์ •๋œ ๊ฐ’๊ณผ ๋™์ผํ•œ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.host == "www.example.com"
request.host == "hr.example.com"

ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด ์ง€์ •๋œ ๊ฐ’์œผ๋กœ ๋๋‚˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

request.host.endsWith("example.com")
์ง€์›๋˜๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜•
  • IAP(Identity-Aware Proxy) ์•ฑ ์„œ๋น„์Šค ๋ฒ„์ „(App Engine): IAP(Identity-Aware Proxy)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ ์„œ๋น„์Šค ๋ฒ„์ „์— ์•ก์„ธ์Šคํ•˜๋Š” ์š”์ฒญ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Cloud Run ์„œ๋น„์Šค

์†์„ฑ์—์„œ ๊ฐ’ ์ถ”์ถœ

extract() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์†์„ฑ์—์„œ ๊ฐ’์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์˜ ์ž„์˜ ๋ถ€๋ถ„์„ ์ถ”์ถœํ•œ ํ›„ ์ถ”์ถœ๋œ ํ…์ŠคํŠธ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์กฐ๊ฑด ํ‘œํ˜„์‹์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

extract() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ถ”์ถœํ•  ์†์„ฑ์˜ ์ผ๋ถ€๋ฅผ ์ง€์ •ํ•˜๋Š” ์ถ”์ถœ ํ…œํ”Œ๋ฆฟ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Compute Engine VM ์ธ์Šคํ„ด์Šค์˜ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์—์„œ ํ”„๋กœ์ ํŠธ ID๋ฅผ ์ถ”์ถœํ•˜๋ ค๋Š” ๊ฒฝ์šฐ projects/{project}/ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”์ถœ ํ…œํ”Œ๋ฆฟ์—๋Š” ๋‹ค์Œ ๋ถ€๋ถ„์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • ์ค‘๊ด„ํ˜ธ๋กœ ๋ฌถ์ธ ์‹๋ณ„์ž๋Š” ์ถ”์ถœํ•  ํ•˜์œ„ ๋ฌธ์ž์—ด์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

    ์ถ”์ถœํ•  ๊ฐ’์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๋Š” ์งง๊ณ  ์˜๋ฏธ ์žˆ๋Š” ์‹๋ณ„์ž๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. A~Z์˜ ๋Œ€๋ฌธ์ž์™€ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ๋ฐ‘์ค„(_)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    projects/{project}/ ํ…œํ”Œ๋ฆฟ์—์„œ ์‹๋ณ„์ž๋Š” project์ž…๋‹ˆ๋‹ค.

  • ์„ ํƒ์‚ฌํ•ญ: ์ถ”์ถœํ•  ํ•˜์œ„ ๋ฌธ์ž์—ด ์•ž์— ์™€์•ผ ํ•˜๋Š” ์ ‘๋‘์‚ฌ์ž…๋‹ˆ๋‹ค.

    projects/{project}/ ํ…œํ”Œ๋ฆฟ์—์„œ ํ”„๋ฆฌํ”ฝ์Šค๋Š” projects/์ž…๋‹ˆ๋‹ค.

  • ์„ ํƒ์‚ฌํ•ญ: ์ถ”์ถœํ•  ํ•˜์œ„ ๋ฌธ์ž์—ด ๋‹ค์Œ์— ์™€์•ผ ํ•˜๋Š” ์ ‘๋ฏธ์‚ฌ์ž…๋‹ˆ๋‹ค.

    projects/{project}/ ํ…œํ”Œ๋ฆฟ์—์„œ ์ ‘๋ฏธ์‚ฌ๋Š” /์ž…๋‹ˆ๋‹ค.

extract() ํ•จ์ˆ˜๋Š” ์ถ”์ถœ ํ…œํ”Œ๋ฆฟ์— ์ ‘๋‘์‚ฌ, ์ ‘๋ฏธ์‚ฌ ๋˜๋Š” ๋‘˜ ๋‹ค๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์†์„ฑ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ฆฌํ”ฝ์Šค ์žˆ์Œ ์ ‘๋ฏธ์‚ฌ ์žˆ์Œ ์ถ”์ถœ๋œ ๊ฐ’
โ€” โ€” ์ „์ฒด ์†์„ฑ
โ€” ์ ‘๋‘์‚ฌ์˜ ์ฒซ ๋ฒˆ์งธ ์–ด์ปค๋Ÿฐ์Šค ๋‹ค์Œ์— ์˜ค๋Š” ๋ฌธ์ž ๋˜๋Š” ์ ‘๋‘์‚ฌ ๋‹ค์Œ์— ๋ฌธ์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ๋ฌธ์ž์—ด
โ€” ์ ‘๋ฏธ์‚ฌ์˜ ์ฒซ ๋ฒˆ์งธ ์–ด์ปค๋Ÿฐ์Šค ์•ž์— ์˜ค๋Š” ๋ฌธ์ž ๋˜๋Š” ์ ‘๋ฏธ์‚ฌ ์•ž์— ๋ฌธ์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ๋ฌธ์ž์—ด
ํ”„๋ฆฌํ”ฝ์Šค์˜ ์ฒซ ๋ฒˆ์งธ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ๊ณผ ์„œํ”ฝ์Šค์˜ ์ฒซ ๋ฒˆ์งธ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ ์‚ฌ์ด์˜ ๋ฌธ์ž ๋˜๋Š” ํ”„๋ฆฌํ”ฝ์Šค์™€ ์„œํ”ฝ์Šค ์‚ฌ์ด์— ๋ฌธ์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ๋ฌธ์ž์—ด

์†์„ฑ์— ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ์ ‘๋‘์‚ฌ ๋˜๋Š” ์ ‘๋ฏธ์‚ฌ๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์ ‘๋ฏธ์‚ฌ๊ฐ€ ์ ‘๋‘์‚ฌ ์•ž์—๋งŒ ์žˆ์œผ๋ฉด extract() ํ•จ์ˆ˜๋Š” ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ถ”์ถœ ํ…œํ”Œ๋ฆฟ์˜ ์ถœ๋ ฅ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” Cloud Storage ๊ฐ์ฒด projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876์˜ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

์ถ”์ถœ ํ…œํ”Œ๋ฆฟ ์ถœ๋ ฅ
/order_date={date}/ 2019-11-03
buckets/{name}/ acme-orders-aaa
/orders/{empty}order_date ๋น„์–ด ์žˆ๋Š” string
{start}/objects/data_lake projects/_/buckets/acme-orders-aaa
orders/{end} order_date=2019-11-03/aef87g87ae0876
{all} projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876
/orders/{none}/order_date= ๋น„์–ด ์žˆ๋Š” string
/orders/order_date=2019-11-03/{id}/data_lake ๋น„์–ด ์žˆ๋Š” string

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