사용할 경우 커스텀 액세스 수준의 다른 요구사항 외에 지정된 액세스 수준의 조건도 충족해야 합니다.
예:
levels.allow_corp_ips
여기서 allow_corp_ips는 액세스 수준의 이름입니다.
device 속성
이 섹션에는 device 객체에서 지원하는 속성이 나와 있습니다. 요청의 식별자와 연결된 기기를 찾을 수 없는 경우 다음 속성이 모두 오류로 평가됩니다.
속성
encryption_status
유형
enum
설명
기기의 암호화 상태를 설명합니다.
열거형 값:
enumDeviceEncryptionStatus{// The encryption status of the device is not specified or not known.ENCRYPTION_UNSPECIFIED==0;// The device does not support encryption.ENCRYPTION_UNSUPPORTED==1;// The device supports encryption, but is currently unencrypted.UNENCRYPTED==2;// The device is encrypted.ENCRYPTED==3;}
enumOsType{// The operating system of the device is not specified or not known.OS_UNSPECIFIED==0;// A desktop Mac operating system.DESKTOP_MAC==1;// A desktop Windows operating system.DESKTOP_WINDOWS==2;// A desktop Linux operating system.DESKTOP_LINUX==3;// An Android operating system.ANDROID==4;// An iOS operating system.IOS==5;// A desktop ChromeOS operating system.DESKTOP_CHROME_OS==6;// A Googlebook operating system.GOOGLEBOOK_OS==8;}
vendors 객체는 서드 파티 보안 및 엔드포인트 관리 공급업체에서 제공하는 데이터에 액세스하는 데 사용됩니다. 각 공급업체는 3개의 공유 최상위 속성(is_compliant_device, is_managed_device, device_health_score)을 채울 수 있습니다.
또한 공급업체는 data 속성을 사용하여 참조하는 자체 키와 값을 제공할 수 있습니다.
data 속성에 사용할 수 있는 키는 공급업체마다 다릅니다. 정책 표현식의 키 값을 비교할 때 일관적이어야 합니다. 예를 들어 키 값이 문자열 또는 부울일 것으로 예상된다면 그에 맞게 정책 표현식의 문자열 또는 부울과 비교해야 합니다. 값이 정수인 경우 정책 표현식의 Double 숫자와 비교해야 합니다.
기기 상태를 참조하려면 key-acme 형식을 사용합니다. 여기서 acme는 조직의 고객 ID입니다. GET https://www.googleapis.com/admin/directory/v1/customers/my_customer URL에서 고객 ID를 가져올 수 있습니다. 응답의 ID 필드에는 문자 C로 시작하는 고객 ID가 포함됩니다. 고객 ID에는 문자 C 뒤에 오는 문자열을 사용합니다(문자 C 제외).
열거형 값:
// Health score of the device as provided by the vendor (possibly third party).enumDeviceHealthScore{// The health score for the device is not specified or unknown.DEVICE_HEALTH_SCORE_UNSPECIFIED=0;// The health of the device is very poor.VERY_POOR=1;// The health of the device is poor.POOR=2;// The health of the device is ok.NEUTRAL=3;// The health of the device is good.GOOD=4;// The health of the device is very good.VERY_GOOD=5;}
원본과 연결된 인증서의 디지털 지문을 반환합니다. 매크로에서 이를 사용하여 기기 인증서를 테스트할 수 있습니다.
예:
// Checks if the enterprise certificate associated with the origin matches the device.device.certificates.exists(cert,cert.is_valid && cert.cert_fingerprint==origin.clientCertFingerprint())
originatesFromProjects(origin, [PROJECT_LIST])
유형
(Origin, list(string)) -> boolean
설명
요청이 특정 Google Cloud 프로젝트 또는 연결된 테넌트 프로젝트에서 시작되었는지 확인합니다.
제약조건: 프로젝트 번호만 지원됩니다 (예: "projects/1234567890"). 영숫자 프로젝트 ID는 허용되지 않습니다.
예:
프로젝트 projects/1234567890 또는 projects/9876543210의 요청만 허용하려면 다음 안내를 따르세요.
요청이 호출 워크로드 아이덴티티를 소유하는 동일한 Google Cloud 프로젝트 또는 연결된 테넌트 프로젝트와 연결된 네트워크에서 시작되는지 확인합니다.
워크로드 아이덴티티는 서비스 계정, 워크로드 아이덴티티 제휴 ID, 관리형 워크로드 아이덴티티 또는 에이전트 ID와 같이 Google Cloud 프로젝트에 속하는 비인간 ID입니다.
예:
시작 네트워크 프로젝트(또는 연결된 테넌트 프로젝트)가 호출 워크로드 아이덴티티를 소유한 프로젝트 my-project와 일치하는 경우에만 요청을 허용하려면 다음을 실행하세요.
request.auth.matchesNetworkProject(origin)
CEL 표현식 매크로
커스텀 액세스 수준의 CEL 표현식에 다음 매크로를 사용할 수 있습니다.
매크로
설명
has(e.f)
필드를 사용할 수 있는지 여부를 테스트합니다. 자세한 내용은 필드 선택을 참조하세요. 예를 들면 다음과 같습니다.
e 목록의 모든 요소 또는 e 맵의 키에 대한 조건자를 보존하는지 여부를 테스트합니다. 여기서 x는 요소 또는 키에 결합되는 p에서 사용되는 식별자입니다. all() 매크로는 요소별 조건자 결과를 and(&&) 연산자와 결합하므로 조건자가 false로 평가되면 매크로에서 다른 조건자의 오류를 무시하고 false로 평가합니다. 예를 들면 다음과 같습니다.
일부 요소가 1보다 크지 않으므로 false가 반환됩니다. [1,2,3].all(x, x > 1)
e.exists(x, p)
all() 매크로와 비슷하지만 조건자 결과를 or(||) 연산자와 결합합니다. 예를 들면 다음과 같습니다.
목록에 1보다 큰 요소가 하나 이상 있으므로 true를 반환합니다. [1,2,3].exists(x, x > 1)
exists() 매크로와 비슷하지만 정확히 요소 또는 키 하나의 조건자가 true로 평가되고 나머지가 false인 경우에만 true로 평가됩니다. 다른 불리언 결과 조합은 false로 평가되며 조건자 오류가 발생하면 매크로로 인해 오류가 발생합니다. 예를 들면 다음과 같습니다.
2개 이상의 요소가 1보다 크므로 false를 반환합니다. [1,2,3].exists_one(x, x > 1)
CEL 표현식 예시
이 섹션에는 커스텀 액세스 수준을 만드는 데 사용되는 CEL 표현식의 예시가 포함되어 있습니다.