IAM 조건의 속성 참조

이 주제는 조건 표현식에서 지원되는 속성에 대해 설명합니다.

지원되는 조건 속성

다음 섹션에는 지원되는 속성에 대한 요약 내용과 각 속성을 인식하는 Google Cloud 서비스가 나와 있습니다.

리소스 속성

다음 속성은 요청의 주체인 리소스와 관련이 있습니다.

속성 사용 요약 지원되는 Google Cloud 서비스
리소스 서비스 속성 사용 중인 Google Cloud 서비스에 따라 액세스를 관리합니다.
  • Apigee
  • Application Integration
  • BigQuery
  • Binary Authorization
  • Bigtable
  • Cloud Key Management Service
  • Cloud Logging
  • Spanner
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • IAP(Identity-Aware Proxy)
  • Integration Connectors
  • Pub/Sub 라이트
  • Resource Manager
  • Secret Manager
리소스 유형 속성 리소스 유형을 기준으로 액세스를 관리합니다.
리소스 이름 속성 리소스 이름을 기준으로 액세스를 관리합니다.
  • Apigee
  • Application Integration
  • BigQuery
  • Binary Authorization
  • Bigtable
  • Cloud Key Management Service
  • Cloud Logging
  • Spanner
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Integration Connectors
  • Pub/Sub 라이트
  • Secret Manager
리소스 태그 리소스에 연결된 태그를 기준으로 액세스를 관리합니다. 모든 Google Cloud 서비스(상속된 조건 지원 참조)

리소스 속성에 대한 자세한 내용은 이 페이지의 리소스 속성을 참조하세요.

요청 속성

다음 속성은 요청의 세부정보와 관련이 있습니다.

속성 사용 요약 지원되는 Google Cloud 서비스

액세스 수준 속성

특정 액세스 수준에 따라 액세스를 관리합니다.

액세스 수준은 원본 IP 주소, 기기 속성, 시간 등 요청 및 요청자에 대한 RAW 속성을 기반으로 계산된 속성입니다. 예를 들어 onNetwork 액세스 수준에서 요청을 하는 기기는 특정 IP 주소 범위에서 시작해야 할 수 있습니다. 액세스 수준은 조직의 관리자가 정의합니다.

IAP(Identity-Aware Proxy)

API 속성

특정 Google Cloud API 또는 서비스에서 제공되는 데이터를 기준으로 액세스를 관리합니다.

  • Identity and Access Management
  • API 게이트웨이
  • AutoML
  • Certificate Authority Service
  • Cloud Functions
  • Cloud Healthcare API
  • Cloud IoT
  • 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 리소스 유형은 허용 정책에 조건을 허용하지 않습니다. 그러나 조직, 폴더 또는 프로젝트 수준에서 조건부 역할 바인딩을 추가할 수 있으며 다른 리소스는 리소스 계층 구조를 통해 이러한 역할 바인딩을 상속합니다. 자세한 내용은 조건부 역할 바인딩을 허용하는 리소스 유형을 확인하세요.

조직, 폴더 또는 프로젝트 수준에서 속성을 사용하는 경우 대부분의 속성은 특정 리소스 유형에서만 사용할 수 있다는 점에 유의하세요. 조건의 일부를 사용할 수 없는 속성을 사용하는 경우 조건의 일부가 액세스 권한을 부여하는 것으로 해석되지 않습니다. 예를 들어 destination.port == 21 조건은 BigQuery 리소스가 대상 IP/포트 속성을 제공하지 않으므로 BigQuery 리소스에 대한 액세스 권한을 부여하지 않습니다.

이 문제를 방지하려면 이 페이지에 설명된 리소스 유형리소스 서비스 속성을 사용하여 조건 범위를 제한하세요. 예를 들어 다음 조건은 IAP(Identity-Aware Proxy) 터널 이외의 모든 리소스 유형에 대해 true로 평가됩니다. 반대로 IAP(Identity-Aware Proxy) 터널 인스턴스의 경우 조건은 목적지 포트를 확인합니다.

resource.type != 'iap.googleapis.com/TunnelInstance' ||
    destination.port == 21

리소스에 연결된 태그를 확인하는 조건의 범위를 제한할 필요는 없습니다. 태그 키 및 값을 확인할 때 리소스 유형 및 리소스 서비스를 포함한 다른 속성을 확인할 수 없습니다.

리소스 속성

리소스 서비스, 리소스 유형, 리소스 이름 속성은 일반적으로 역할 바인딩에서 제공하는 액세스 권한 부여의 범위를 변경하는 데 사용됩니다. 역할에 여러 리소스 특정 속성에 적용되는 권한이 포함된 경우, 리소스 기반 조건을 사용하여 특정 유형 또는 특정 서비스에 대한 역할 권한의 하위 집합을 부여할 수 있습니다.

resource.service 속성

resource.service 속성을 사용하면 사용 중인 Google Cloud 서비스를 기준으로 조건을 설정할 수 있습니다. 예를 들어 cloudresourcemanager.googleapis.com 서비스를 사용하는 리소스에 대한 사용자 액세스를 제한하는 조건을 설정할 수 있습니다. 지원되는 값 목록은 리소스 서비스 값을 참조하세요.

속성 변수 resource.service
속성 유형

string

지원되는 값 목록은 리소스 서비스 값을 참조하세요.

지원되는 연산자 ,
세부정보 조건에서 resource.type 속성을 사용하는 경우 속성과 같음() 또는 같지 않음()을 확인합니다. 접두사 또는 접미사 확인과 같은 다른 비교로 인해 예상치 못한 결과가 발생할 수 있습니다.
예시

Compute Engine 리소스의 true를 반환합니다.


resource.service == "compute.googleapis.com"
지원되는 서비스
  • Apigee
  • Application Integration
  • BigQuery
  • Binary Authorization
  • Bigtable
  • Cloud Key Management Service
  • Cloud Logging
  • Spanner
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • IAP(Identity-Aware Proxy)
  • Integration Connectors
  • Pub/Sub 라이트
  • Resource Manager
  • Secret Manager

resource.type 속성

resource.type 속성을 사용하면 리소스 유형을 기준으로 조건을 설정할 수 있습니다. 예를 들어 storage.googleapis.com/Object 유형의 리소스에 대한 사용자 액세스를 제한하는 조건을 설정할 수 있습니다. 지원되는 값 목록은 리소스 유형 값을 참조하세요.

조건에서 resource.name 속성을 사용하는 경우 resource.type 속성을 사용하여 조건이 적용되는 리소스 유형을 제어하는 것이 좋습니다. 자세한 내용은 이 페이지의 resource.name 속성을 참조하세요.

속성 변수 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(디버그) 세션
BigQuery
  • 데이터 세트
  • 모델
  • 루틴
  • 테이블
Application Integration
  • 인증 구성
  • 실행
  • 통합 버전
  • 통합
  • 위치
  • 정지
Binary Authorization
  • 증명자
  • 지속적 검증 구성
  • 정책
Bigtable
  • 클러스터
  • 인스턴스
  • 테이블
Cloud Key Management Service
  • Crypto 키 버전
  • Crypto 키
  • 키링
Cloud Logging
  • 로그 버킷
  • 로그 뷰
Spanner
  • 백업
  • 데이터베이스
  • 인스턴스
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
  • 연결
  • 연결 스키마 메타데이터
  • 엔드포인트 연결
  • 이벤트 구독
  • 관리형 영역
Pub/Sub 라이트
  • 위치
  • 구독
  • 주제
Resource Manager
  • 프로젝트
Secret Manager
  • 보안 비밀 버전
  • 보안 비밀

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
속성 유형

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(디버그) 세션
BigQuery
  • 데이터 세트
  • 모델
  • 루틴
  • 테이블
Application Integration
  • 인증 구성
  • 실행
  • 통합 버전
  • 통합
  • 위치
  • 정지
Binary Authorization
  • 증명자
  • 지속적 검증 구성
  • 정책
Bigtable
  • 클러스터
  • 인스턴스
  • 테이블
Cloud Key Management Service
  • Crypto 키
  • Crypto 키 버전
  • 키링
Cloud Logging
  • 로그 버킷
  • 로그 뷰
Spanner
  • 백업
  • 데이터베이스
  • 인스턴스
Cloud SQL
  • 백업 실행
  • 인스턴스
Cloud Storage
  • 버킷
  • 관리되는 폴더
  • 객체
Compute Engine
  • 백엔드 서비스(전역 및 리전)
  • 방화벽
  • 전달 규칙(전역 및 리전)
  • 이미지
  • 인스턴스 템플릿
  • 인스턴스
  • 영구 디스크(리전 및 영역)
  • 스냅샷
  • 대상 HTTP(S) 프록시(전역 및 리전)
  • 대상 SSL 프록시
  • 대상 TCP 프록시
Google Kubernetes Engine
  • 클러스터
Firestore
  • 데이터베이스
Dataform
  • 컴파일 결과
  • 위치
  • 출시 구성
  • 저장소
  • 워크플로 구성
  • 워크플로 호출
  • 작업공간
Integration Connectors
  • 연결
  • 연결 스키마 메타데이터
  • 엔드포인트 연결
  • 이벤트 구독
  • 관리형 영역
Pub/Sub 라이트
  • 위치
  • 구독
  • 주제
Secret Manager
  • 보안 비밀 버전
  • 보안 비밀

리소스 태그

리소스 태그의 함수를 사용하면 리소스에 연결되거나 상속되는 태그를 기준으로 조건을 설정할 수 있습니다. 예를 들어 태그 env: prod가 연결된 리소스에 대해서만 역할을 부여하는 조건을 설정할 수 있습니다. 태그를 사용한 액세스 제어에 대한 자세한 내용은 태그 및 액세스 제어를 참조하세요.

각 태그는 키와 값으로 구성됩니다. 각 키 및 값에는 몇 가지 다른 유형의 식별자가 있습니다.

  • 영구 ID: 전역적으로 고유하며 재사용할 수 없습니다. 예를 들어 태그 키는 영구 ID tagKeys/123456789012, 태그 값은 영구 ID tagValues/567890123456를 가질 수 있습니다.
  • 닉네임: 각 키의 닉네임은 조직 내에서 고유해야 하고 각 값의 닉네임은 연결된 키에 고유해야 합니다. 예를 들어 태그 키는 닉네임 env, 태그 값은 닉네임 prod를 가질 수 있습니다.
  • 네임스페이스화된 이름: 조직의 숫자 ID를 태그 키의 닉네임에 추가합니다. 예를 들어 태그 키는 네임스페이스화된 이름 123456789012/env를 가질 수 있습니다. 조직 ID를 가져오는 방법 알아보기

조건에서 사용할 식별자 유형을 선택하는 방법은 태그 정의 및 식별자를 참조하세요.

태그의 조건은 모든 Google Cloud 서비스 및 리소스 유형에서 지원됩니다. 이를 직접 지원하지 않는 리소스에 태그 조건을 적용하는 방법을 알아보려면 이 페이지의 상속된 조건 지원을 참조하세요.

다음 함수를 사용하여 태그를 기준으로 조건을 설정할 수 있습니다.

함수 설명
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() 함수를 사용합니다.

매개변수
  • 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() 함수를 사용합니다.

매개변수
  • keyId: 태그 키의 영구 ID입니다. 예를 들면 tagKeys/123456789012입니다.
  • valueId: 태그 값의 영구 ID입니다. 예를 들면 tagValues/567890123456입니다.
예시

요청의 리소스에 tagKeys/123456789012 키 및 tagValues/567890123456 값이 있는 태그가 있다면 true를 반환합니다.


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

요청 속성

요청 속성을 사용하면 액세스 수준, 날짜/시간, 대상 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 또는 서비스에서 제공되는 데이터를 기준으로 액세스를 관리할 수 있습니다.

예를 들어 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 속성을 가져옵니다.

매개변수
  • attributeName: 가져올 API 속성입니다. 지원되는 값은 이 페이지의 Cloud Storage API 속성IAM API 속성을 참조하세요.
  • defaultValue: API 속성을 사용할 수 없는 경우에 사용할 기본값(V)입니다. V 값은 T 유형이며, 여기서 T는 API 속성 값과 동일한 유형입니다. 예를 들어 API 속성 값이 문자열이면 빈 문자열 또는 undefined와 같은 자리표시자 문자열을 사용할 수 있습니다.

예시

다음 중 하나를 반환합니다.

  • Cloud Storage 버킷의 객체 나열 요청의 경우 요청에 prefix 매개변수가 포함되어 있으면 함수가 해당 값을 반환합니다.
  • prefix 매개변수가 생략된 객체를 나열하는 요청과 다른 모든 요청 유형의 경우 이 함수는 빈 문자열을 반환합니다.

api.getAttribute("storage.googleapis.com/objectListPrefix", "")
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 Functions
  • Cloud Healthcare API
  • Cloud IoT
  • 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

stringTimestamp으로 변환합니다.

매개변수

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 주소 또는 포트를 기반으로 액세스를 관리할 수 있습니다.

예를 들어 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 포트 번호를 식별합니다.

예시

반환: true if the destination port is 21:


destination.port == 21

Returns true if the destination port is less than 3001:


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 전달 규칙(프로토콜 전달)
Traffic Director1 전달 규칙

1 Compute Engine의 리소스 속성을 사용합니다.

URL 경로/호스트 속성

URL 경로/호스트 속성을 사용하면 요청의 URL 경로 또는 호스트를 기준으로 액세스를 관리할 수 있습니다. 예를 들어 조건을 사용하여 https://example.com은 일반 사용자 도메인이 액세스할 수 있는 기본 애플리케이션으로 지정하고 https://hr.example.com/admin은 인사 관리 담당자만 액세스할 수 있는 애플리케이션의 페이지에 액세스할 때 사용되도록 지정할 수 있습니다.

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로 변환할 수 있습니다. 예시는 리소스 기반 액세스 구성을 참조하세요.