REST Resource: projects.locations.authzPolicies

리소스: AuthzPolicy

AuthzPolicy는 보안상의 목적으로 트래픽을 검사하도록 설계된 콜아웃 백엔드로 트래픽을 전달할 수 있는 리소스입니다.

JSON 표현
{
  "name": string,
  "createTime": string,
  "updateTime": string,
  "description": string,
  "labels": {
    string: string,
    ...
  },
  "target": {
    object (Target)
  },
  "httpRules": [
    {
      object (AuthzRule)
    }
  ],
  "action": enum (AuthzAction),
  "customProvider": {
    object (CustomProvider)
  }
}
필드
name

string

(필수 항목) 식별자. AuthzPolicy 리소스 이름으로, projects/{project}/locations/{location}/authzPolicies/{authzPolicy} 형식입니다.

createTime

string (Timestamp format)

출력 전용입니다. 리소스가 생성된 타임스탬프입니다.

RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"입니다.

updateTime

string (Timestamp format)

출력 전용입니다. 리소스가 업데이트된 타임스탬프입니다.

RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"입니다.

description

string

(선택사항) 인간이 읽을 수 있는 리소스 설명입니다.

labels

map (key: string, value: string)

(선택사항) AuthzPolicy 리소스와 연결된 라벨 집합입니다.

형식은 다음 요구사항을 준수해야 합니다.

"key": value 쌍 목록을 포함하는 객체입니다. 예: { "name": "wrench", "mass": "1.3kg", "count": "3" }

target

object (Target)

(필수 항목) 이 정책을 적용할 리소스 집합을 지정합니다.

httpRules[]

object (AuthzRule)

(선택사항) 들어오는 요청과 일치시키는 승인 HTTP 규칙 목록입니다. 정책 일치는 하나 이상의 HTTP 규칙이 요청과 일치하거나 정책에 HTTP 규칙이 지정되지 않은 경우에 발생합니다. 허용 또는 거부 작업에는 HTTP 규칙이 하나 이상 필요합니다. 규칙은 5개로 제한됩니다.

action

enum (AuthzAction)

(필수 항목) ALLOW, DENY, CUSTOM 중 하나일 수 있습니다.

작업이 CUSTOM인 경우 customProvider를 지정해야 합니다.

작업이 ALLOW이면 정책과 일치하는 요청만 허용됩니다.

작업이 DENY인 경우 정책과 일치하는 요청만 거부됩니다.

요청이 도착하면 정책이 다음 순서대로 평가됩니다.

  1. 요청과 일치하는 CUSTOM 정책이 있는 경우 커스텀 승인 제공업체를 사용하여 CUSTOM 정책이 평가되며 제공업체에서 요청을 거부하면 요청이 거부됩니다.

  2. 요청과 일치하는 DENY 정책이 있으면 요청이 거부됩니다.

  3. 리소스에 ALLOW 정책이 없거나 ALLOW 정책이 요청과 일치하면 요청이 허용됩니다.

  4. ALLOW 작업이 있는 구성된 AuthzPolicies 중 요청과 일치하는 정책이 없으면 요청이 기본적으로 거부됩니다.

customProvider

object (CustomProvider)

(선택사항) 작업이 CUSTOM인 경우 필요합니다. 승인 결정을 Cloud IAP 또는 서비스 확장 프로그램에 위임할 수 있습니다. cloudIap 또는 authzExtension 중 하나를 지정해야 합니다.

타겟

이 정책을 적용할 대상 집합을 지정합니다.

JSON 표현
{
  "loadBalancingScheme": enum (LoadBalancingScheme),
  "resources": [
    string
  ]
}
필드
loadBalancingScheme

enum (LoadBalancingScheme)

(필수 항목) 이 정책 및 확장 프로그램에서 참조하는 모든 게이트웨이와 전달 규칙은 동일한 부하 분산 스키마를 공유해야 합니다. 지원되는 값은 INTERNAL_MANAGEDEXTERNAL_MANAGED입니다. 자세한 내용은 백엔드 서비스 개요를 참고하세요.

resources[]

string

(필수 항목) 이 정책이 적용될 전달 규칙에 대한 참조 목록입니다.

LoadBalancingScheme

AuthzPolicy 리소스에서 지원되는 부하 분산 스키마입니다. 유효한 값은 INTERNAL_MANAGEDEXTERNAL_MANAGED입니다. 자세한 내용은 백엔드 서비스 개요를 참고하세요.

열거형
LOAD_BALANCING_SCHEME_UNSPECIFIED 기본값 사용하지 마세요.
INTERNAL_MANAGED 리전 내부 또는 리전 간 내부 애플리케이션 부하 분산에 사용됨을 나타냅니다.
EXTERNAL_MANAGED 전역 외부 또는 리전 외부 애플리케이션 부하 분산에 사용됨을 나타냅니다.
INTERNAL_SELF_MANAGED Cloud Service Mesh에 사용됨을 나타냅니다. CSM GKE 컨트롤러 전용입니다.

AuthzRule

수신 요청과 일치하는 조건입니다.

JSON 표현
{
  "from": {
    object (From)
  },
  "to": {
    object (To)
  },
  "when": string
}
필드
from

object (From)

(선택사항) 요청의 소스 1개 이상에 관한 속성을 설명합니다.

to

object (To)

(선택사항) 요청의 하나 이상의 타겟의 속성을 설명합니다.

when

string

(선택사항) 작업에 대해 충족되어야 하는 조건을 설명하는 CEL 표현식입니다. CEL 표현식의 결과는 from 및 to와 AND 연산됩니다. 사용 가능한 속성 목록은 CEL 언어 참조를 참고하세요.

From

요청의 소스 1개 이상에 관한 속성을 설명합니다.

JSON 표현
{
  "sources": [
    {
      object (RequestSource)
    }
  ],
  "notSources": [
    {
      object (RequestSource)
    }
  ]
}
필드
sources[]

object (RequestSource)

(선택사항) 요청 소스의 속성을 설명합니다. sources 또는 notSources 중 하나 이상을 지정해야 합니다. 소스는 5개로 제한됩니다. sources 또는 notSources의 모든 소스가 요청과 일치하면 일치가 발생합니다. 단일 소스 내에서 일치는 필드 간의 AND 시맨틱과 단일 필드 내의 OR 시맨틱을 따릅니다. 즉, 모든 주 구성원이 일치하고 모든 ipBlocks가 일치하면 일치가 발생합니다.

notSources[]

object (RequestSource)

(선택사항) 요청 소스의 부정된 속성을 설명합니다. 이 필드에 지정된 기준과 일치하지 않는 소스의 요청과 일치합니다. sources 또는 notSources 중 하나 이상을 지정해야 합니다.

RequestSource

단일 소스의 속성을 설명합니다.

JSON 표현
{
  "principals": [
    {
      object (StringMatch)
    }
  ],
  "resources": [
    {
      object (RequestResource)
    }
  ]
}
필드
principals[]

object (StringMatch)

(선택사항) 클라이언트 인증서에서 파생된 ID 목록입니다. 전달 규칙 또는 게이트웨이에 상호 TLS가 사용 설정되지 않으면 이 필드는 요청과 일치하지 않습니다. 각 ID는 값이 URI SAN, DNS SAN 또는 클라이언트 인증서의 주체 필드와 일치하는 문자열입니다. 일치는 정확한 일치, 접두사, 접미사 또는 하위 문자열 일치일 수 있습니다. exact, prefix, suffix 또는 contains 중 하나를 지정해야 합니다. 5명의 주 구성원으로 제한됩니다.

resources[]

object (RequestResource)

(선택사항) 요청의 소스 VM 리소스와 일치시키는 리소스 목록입니다. 리소스는 5개로 제한됩니다.

StringMatch

문자열 값을 일치시키는 방법을 결정합니다.

JSON 표현
{
  "ignoreCase": boolean,

  // Union field match_pattern can be only one of the following:
  "exact": string,
  "prefix": string,
  "suffix": string,
  "contains": string
  // End of list of possible types for union field match_pattern.
}
필드
ignoreCase

boolean

true이면 exact/prefix/suffix/contains 일치가 대소문자를 구분하지 않아야 함을 나타냅니다. 예를 들어 일치자 data는 true로 설정된 경우 입력 문자열 Datadata 모두와 일치합니다.

통합 필드 match_pattern.

match_pattern는 다음 중 하나여야 합니다.

exact

string

입력 문자열은 여기에 지정된 문자열과 정확히 일치해야 합니다.

예를 들면 다음과 같습니다.

  • abcabc 값과만 일치합니다.
prefix

string

입력 문자열에는 여기에 지정된 접두사가 있어야 합니다. 참고: 빈 접두사는 허용되지 않습니다. 대신 정규식을 사용하세요.

예를 들면 다음과 같습니다.

  • abcabc.xyz 값과 일치합니다.
suffix

string

입력 문자열에는 여기에 지정된 접미사가 있어야 합니다. 참고: 빈 접두사는 허용되지 않습니다. 대신 정규식을 사용하세요.

예를 들면 다음과 같습니다.

  • abcxyz.abc 값과 일치합니다.
contains

string

입력 문자열에는 여기에 지정된 하위 문자열이 있어야 합니다. 참고: 빈 포함 일치는 허용되지 않습니다. 대신 정규식을 사용하세요.

예를 들면 다음과 같습니다.

  • abcxyz.abc.def 값과 일치합니다.

RequestResource

내부 애플리케이션 부하 분산기에 액세스하는 클라이언트 VM 리소스의 속성을 설명합니다.

JSON 표현
{
  "tagValueIdSet": {
    object (TagValueIdSet)
  },
  "iamServiceAccount": {
    object (StringMatch)
  }
}
필드
tagValueIdSet

object (TagValueIdSet)

(선택사항) 요청의 소스 VM과 연결된 리소스 관리자 태그 값과 일치시키는 리소스 태그 값 영구 ID 목록입니다.

iamServiceAccount

object (StringMatch)

(선택사항) 요청을 전송하는 VM의 소스 서비스 계정과 일치하는 IAM 서비스 계정입니다.

TagValueIdSet

요청의 소스 VM과 연결된 리소스 관리자 태그 값과 일치시키는 리소스 태그 값 영구 ID 집합을 설명합니다.

JSON 표현
{
  "ids": [
    string
  ]
}
필드
ids[]

string (int64 format)

(필수 항목) 요청의 소스 VM과 연결된 리소스 관리자 태그 값과 일치시키는 리소스 태그 값 영구 ID 목록입니다. 일치는 AND 문법을 따르므로 모든 ID가 일치해야 합니다. 일치 항목은 5개로 제한됩니다.

To

요청의 하나 이상의 타겟의 속성을 설명합니다.

JSON 표현
{
  "operations": [
    {
      object (RequestOperation)
    }
  ],
  "notOperations": [
    {
      object (RequestOperation)
    }
  ]
}
필드
operations[]

object (RequestOperation)

(선택사항) 요청의 하나 이상의 타겟의 속성을 설명합니다. operations 또는 notOperations 중 하나 이상을 지정해야 합니다. 작업은 5회로 제한됩니다. 일치는 operations 또는 notOperations의 모든 작업이 일치할 때 발생합니다. 작업 내에서 일치는 필드 전반의 AND 시맨틱스와 필드 내의 OR 시맨틱스를 따릅니다. 즉, 임의의 경로가 일치하고 임의의 헤더가 일치하고 임의의 메서드가 일치하면 일치가 발생합니다.

notOperations[]

object (RequestOperation)

(선택사항) 요청 대상의 부정된 속성을 설명합니다. 이 필드에 지정된 기준과 일치하지 않는 작업 요청을 일치시킵니다. operations 또는 notOperations 중 하나 이상을 지정해야 합니다.

RequestOperation

요청의 하나 이상의 타겟의 속성을 설명합니다.

JSON 표현
{
  "headerSet": {
    object (HeaderSet)
  },
  "hosts": [
    {
      object (StringMatch)
    }
  ],
  "paths": [
    {
      object (StringMatch)
    }
  ],
  "methods": [
    string
  ]
}
필드
headerSet

object (HeaderSet)

(선택사항) HTTP 헤더에서 일치시킬 헤더 목록입니다.

hosts[]

object (StringMatch)

(선택사항) 일치시킬 HTTP 호스트 목록입니다. 일치는 정확히 일치, 접두사, 접미사 또는 포함 (하위 문자열 일치) 중 하나일 수 있습니다. ignoreCase가 설정되지 않는 한 일치는 항상 대소문자를 구분합니다. 일치 항목은 5개로 제한됩니다.

paths[]

object (StringMatch)

(선택사항) 일치시킬 경로 목록입니다. 일치는 정확히 일치, 접두사, 접미사 또는 포함 (하위 문자열 일치) 중 하나일 수 있습니다. ignoreCase가 설정되지 않는 한 일치는 항상 대소문자를 구분합니다. 일치 항목은 5개로 제한됩니다. 이 경로 일치에는 쿼리 매개변수가 포함됩니다. gRPC 서비스의 경우 /package.service/method 형식의 정규화된 이름이어야 합니다.

methods[]

string

(선택사항) 일치시킬 HTTP 메서드의 목록입니다. 각 항목은 유효한 HTTP 메서드 이름 (GET, PUT, POST, HEAD, PATCH, DELETE, OPTIONS)이어야 합니다. 일치검색만 허용되며 항상 대소문자를 구분합니다.

HeaderSet

일치시킬 HTTP 헤더 집합을 설명합니다.

JSON 표현
{
  "headers": [
    {
      object (HeaderMatch)
    }
  ]
}
필드
headers[]

object (HeaderMatch)

(필수 항목) HTTP 헤더에서 일치시킬 헤더 목록입니다. 일치는 정확히 일치, 접두사, 접미사 또는 포함 (하위 문자열 일치) 중 하나일 수 있습니다. 일치는 AND 문법을 따르므로 모든 헤더가 일치해야 합니다. ignoreCase가 설정되지 않는 한 일치는 항상 대소문자를 구분합니다. 일치 항목은 5개로 제한됩니다.

HeaderMatch

HTTP 헤더를 일치시키는 방법을 결정합니다.

JSON 표현
{
  "name": string,
  "value": {
    object (StringMatch)
  }
}
필드
name

string

(선택사항) 요청의 헤더 이름을 지정합니다.

value

object (StringMatch)

(선택사항) 헤더 일치가 실행되는 방식을 지정합니다.

AuthzAction

이 정책에 적용할 작업입니다. 유효한 값은 ALLOW, DENY, CUSTOM입니다.

열거형
AUTHZ_ACTION_UNSPECIFIED 지정되지 않은 작업입니다.
ALLOW 요청이 백엔드로 전달되도록 허용합니다.
DENY 요청을 거부하고 클라이언트에 HTTP 404를 반환합니다.
CUSTOM 승인 결정을 외부 승인 엔진에 위임합니다.

CustomProvider

승인 결정을 Cloud IAP 또는 서비스 확장 프로그램에 위임할 수 있습니다.

JSON 표현
{
  "cloudIap": {
    object (CloudIap)
  },
  "authzExtension": {
    object (AuthzExtension)
  }
}
필드
cloudIap

object (CloudIap)

(선택사항) 승인 결정을 Cloud IAP에 위임합니다. 관리형 부하 분산기에만 적용됩니다. AuthzPolicy 수준에서 Cloud IAP를 사용 설정하면 BackendService의 Cloud IAP 설정과 호환되지 않습니다. 두 위치 모두에서 IAP를 사용 설정하면 요청이 실패합니다. IAP가 AuthzPolicy 또는 BackendService 중 하나에서 사용 설정되어 있지만 둘 다에서 사용 설정되어 있지 않은지 확인합니다.

authzExtension

object (AuthzExtension)

(선택사항) 사용자 작성 서비스 확장 프로그램에 승인 결정을 위임합니다. cloudIap 또는 authzExtension 중 하나만 지정할 수 있습니다.

CloudIap

이 유형에는 필드가 없습니다.

(선택사항) 승인 결정을 Cloud IAP에 위임합니다. 관리형 부하 분산기에만 적용됩니다. AuthzPolicy 수준에서 Cloud IAP를 사용 설정하면 BackendService의 Cloud IAP 설정과 호환되지 않습니다. 두 위치 모두에서 IAP를 사용 설정하면 요청이 실패합니다. IAP가 AuthzPolicy 또는 BackendService 중 하나에서 사용 설정되어 있지만 둘 다에서 사용 설정되어 있지 않은지 확인합니다.

AuthzExtension

(선택사항) 사용자 작성 확장 프로그램에 승인 결정을 위임합니다. cloudIap 또는 authzExtension 중 하나만 지정할 수 있습니다.

JSON 표현
{
  "resources": [
    string
  ]
}
필드
resources[]

string

(필수 항목) 이 정책과 일치하는 요청에 대해 호출될 승인 확장 프로그램에 대한 참조 목록입니다. 맞춤 제공업체는 1개로 제한됩니다.

메서드

create

특정 프로젝트와 위치에 새 AuthzPolicy를 만듭니다.

delete

단일 AuthzPolicy를 삭제합니다.

get

단일 AuthzPolicy의 세부정보를 가져옵니다.

list

특정 프로젝트와 위치의 AuthzPolicies를 나열합니다.

patch

단일 AuthzPolicy의 매개변수를 업데이트합니다.