애플리케이션 부하 분산기에서 승인 정책은 경로 확장 프로그램, 네트워크 보안 정책 (Google Cloud Armor에서 평가), 교차 출처 리소스 공유 (CORS) 정책, IAP (Identity-Aware Proxy)를 평가한 후 트래픽 관리 작업을 실행하기 전에 호출됩니다.
이 페이지에서는 애플리케이션 부하 분산기의 승인 정책을 설정하는 방법을 보여줍니다.
시작하기 전에
- 승인 정책 개요를 숙지하세요.
-
- Network Security API
- Network Services API
부하 분산기 설정
부하 분산기를 만들지 않았다면 다음 페이지를 참고하여 원하는 애플리케이션 부하 분산기를 설정하세요.
- 전역 외부 애플리케이션 부하 분산기를 만들려면 VM 인스턴스 그룹 백엔드로 전역 외부 애플리케이션 부하 분산기 설정을 참고하세요.
리전 외부 애플리케이션 부하 분산기를 만들려면 VM 인스턴스 그룹 백엔드가 있는 리전 외부 애플리케이션 부하 분산기 설정을 참고하세요.
리전 내부 애플리케이션 부하 분산기를 만들려면 VM 인스턴스 그룹 백엔드로 리전 내부 애플리케이션 부하 분산기 설정을 참고하세요.
- 리전 간 내부 애플리케이션 부하 분산기를 만들려면 VM 인스턴스 그룹 백엔드로 리전 간 내부 애플리케이션 부하 분산기 설정을 참고하세요.
보안 태그 또는 서비스 계정 만들기 및 구성
내부 애플리케이션 부하 분산기를 사용하면 클라이언트 VM에 연결된 보안 태그 및 서비스 계정을 기반으로 승인 정책을 적용할 수 있습니다(선택사항). 태그 기반 승인 정책을 적용하려면 Resource Manager를 사용하여 태그를 만드세요.
외부 애플리케이션 부하 분산기를 사용하는 경우 보안 태그를 만들고 구성할 필요가 없습니다.
자세한 내용은 방화벽에 태그 사용 및 서비스 계정을 참고하세요.
클라이언트 VM에 서비스 계정 연결
VM 인스턴스에 서비스 계정을 연결하는 방법에 대한 단계별 절차는 다음 문서를 참고하세요.
- VM을 만드는 동안 서비스 계정을 설정하려면 사용자 관리 서비스 계정을 사용하는 VM 만들기를 참고하세요.
- 기존 VM에서 서비스 계정을 설정하려면 연결된 서비스 계정 변경을 참고하세요.
보안 태그 키 및 값 만들기
인스턴스 그룹 템플릿으로 보안 태그를 바인딩하기 전에 태그 키와 값을 만들어야 합니다. 태그를 만들 때는 GCE_FIREWALL
목적으로 태그를 지정합니다. 보안 웹 프록시 및 승인 정책을 포함하여 Google Cloud 네트워킹 기능을 사용하려면 태그를 적용하기 위해 GCE_FIREWALL
용도가 필요합니다.
보안 태그를 만들려면 태그 관리자 역할 (roles/resourcemanager.tagAdmin
)이 필요합니다.
콘솔
Google Cloud 콘솔에서 태그 페이지로 이동합니다.
만들기를 클릭합니다.
태그 키 설명 필드에 설명을 입력합니다.
네트워크 방화벽과 함께 사용 체크박스를 선택합니다.
프로젝트 목록에서 태그를 만들 Google Cloud 프로젝트를 선택합니다.
네트워크 필드에서
LB_NETWORK
를 선택합니다.값 추가를 클릭합니다.
태그 값 필드에
TAG_VALUE
를 입력합니다. 값은 숫자여야 합니다.태그 값 설명 필드에 설명을 입력합니다.
태그 값 추가를 완료했으면 태그 키 만들기를 클릭합니다.
gcloud
보안 태그 키를 만듭니다.
gcloud resource-manager tags keys create TAG_KEY \ --parent=organizations/ORG_ID \ --purpose=GCE_FIREWALL \ --purpose-data=network=LB_NETWORK
다음을 바꿉니다.
TAG_KEY
: 보안 태그 키의 이름입니다.ORG_ID
: 조직의 IDLB_NETWORK
: VPC 네트워크의 이름입니다.
숫자 태그 키에 보안 태그 값을 추가합니다.
gcloud resource-manager tags values create TAG_VALUE \ --parent=ORG_ID/TAG_KEY
TAG_VALUE
를 숫자 태그 값으로 바꿉니다.
인스턴스 그룹 템플릿에 보안 태그 바인딩
태그 관리자는 개별 VM 인스턴스 또는 인스턴스 그룹 템플릿에 보안 태그를 바인딩하고 VM 또는 템플릿의 백엔드에 태그 값을 연결할 수 있습니다.
보안 태그를 바인딩하려면 태그 사용자 역할(roles/resourcemanager.tagUser
)이 필요합니다.
프로젝트 및 영역의 전체 이름 프리픽스를 정의합니다.
FULL_NAME_PREFIX=//compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/instances/
다음을 바꿉니다.
PROJECT_ID
: 프로젝트의 ID입니다.ZONE
: 관리형 인스턴스 그룹이 있는 영역입니다.
인스턴스 그룹 템플릿 ID를 가져옵니다.
TEMPLATE_ID=$(gcloud compute instance-templates describe TEMPLATE_NAME --region=LOCATION --format='value(id)')
다음을 바꿉니다.
TEMPLATE_NAME
: 인스턴스 그룹 템플릿의 이름입니다.LOCATION
: Google Cloud 리전입니다.
FULL_NAME_PREFIX
및TEMPLATE_ID
값을 연결합니다.PARENT="$FULL_NAME_PREFIX$TEMPLATE_ID" echo $PARENT
바인딩을 만듭니다.
gcloud resource-manager tags bindings create \ --location LOCATION \ --tag-value ORG_ID/TAG_KEY/TAG_VALUE \ --parent PARENT
다음을 바꿉니다.
ORG_ID
: 조직의 IDLOCATION
: Google Cloud 리전입니다.TAG_KEY
: 보안 태그 키의 이름입니다.TAG_VALUE
: 숫자 태그 값입니다.
승인 정책 만들기
승인 정책을 만들려면 타겟과 규칙을 정의하는 YAML 파일을 만든 다음 gcloud beta network-security
authz-policies
명령어를 사용하여 파일을 가져옵니다.
이 섹션에서는 부하 분산기의 전달 규칙에 연결된 다양한 유형의 승인 정책을 만드는 방법을 설명합니다.
요청을 거부하는 승인 정책
전역 및 리전 간
전역 외부 애플리케이션 부하 분산기 또는 리전 간 내부 애플리케이션 부하 분산기를 사용하는 경우 다음 단계에 따라 승인 정책을 만들고 가져옵니다.
특정 요청을 거부하는 승인 정책 파일을 만듭니다.
다음 예에서는
global
위치에 전달 규칙LB_FORWARDING_RULE
의authz-policy-deny.yaml
파일을 만듭니다. 이 정책은*.hello.com
클라이언트가/api/payments
URL 경로에 액세스하는 것을 거부합니다.$ cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - principals: - suffix: ".hello.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOF
다음을 바꿉니다.
LB_SCHEME
: 부하 분산 스키마입니다. 전역 외부 애플리케이션 부하 분산기의 경우 스키마를EXTERNAL_MANAGED
로 설정합니다. 리전 간 내부 애플리케이션 부하 분산기의 경우 스키마를INTERNAL_MANAGED
로 설정합니다.PROJECT_ID
: Google Cloud 프로젝트의 ID입니다.LB_FORWARDING_RULE
: 부하 분산기의 전달 규칙 이름입니다.
승인 정책을 만들고 YAML 파일을 가져옵니다.
다음 명령어 예시에서는 이전에 만든 정책 파일을 가져와 승인 정책을 만듭니다.
gcloud beta network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
리전
리전 외부 애플리케이션 부하 분산기 또는 리전 내부 애플리케이션 부하 분산기를 사용하는 경우 다음 단계에 따라 승인 정책을 만들고 가져옵니다.
특정 요청을 허용하도록 승인 정책 파일을 만듭니다.
다음 예에서는 Google Cloud 리전에서 전달 규칙
LB_FORWARDING_RULE
의authz-policy-deny.yaml
파일을 만듭니다. 이 정책은*.hello.com
와 일치하는 ID가 있는 클라이언트가/api/payments
URL 경로에 액세스하는 것을 거부합니다. 또한 이 정책은 서비스 계정my-sa-123@PROJECT_ID.iam.gserviceaccount.com
이 있는 모든 클라이언트 VM의/api/payments
URL 액세스를 거부합니다.$ cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - principals: - suffix: ".hello.com" to: operations: - paths: - prefix: "/api/payments" - from: sources: - resources: - iamServiceAccount: exact: "my-sa-123@PROJECT_ID.iam.gserviceaccount.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOF
다음을 바꿉니다.
LB_SCHEME
: 부하 분산 스키마입니다. 리전 외부 애플리케이션 부하 분산기의 경우 스키마를EXTERNAL_MANAGED
로 설정합니다. 리전 내부 애플리케이션 부하 분산기의 경우 스키마를INTERNAL_MANAGED
로 설정합니다.PROJECT_ID
: Google Cloud 프로젝트의 ID입니다.LOCATION
: Google Cloud 리전입니다.LB_FORWARDING_RULE
: 부하 분산기의 전달 규칙 이름입니다.
승인 정책을 만들고 YAML 파일을 가져옵니다.
다음 명령어 예에서는 이전에 만든 정책 파일을 가져오고
LOCATION
리전에 승인 정책을 만듭니다.gcloud beta network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=LOCATION
요청을 허용하는 승인 정책
전역 및 리전 간
전역 외부 애플리케이션 부하 분산기 또는 리전 간 내부 애플리케이션 부하 분산기를 사용하는 경우 다음 단계에 따라 승인 정책을 만들고 가져옵니다.
특정 요청을 허용하도록 승인 정책 파일을 만듭니다.
다음 예에서는
global
위치에 전달 규칙LB_FORWARDING_RULE
의authz-policy-allow.yaml
파일을 만듭니다. 이 정책은*.example.com
의 클라이언트만/api/payments
URL 경로에 액세스하도록 허용합니다.$ cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - principals: - suffix: ".example.com" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOF
다음을 바꿉니다.
LB_SCHEME
: 부하 분산 스키마입니다. 전역 외부 애플리케이션 부하 분산기의 경우 스키마를EXTERNAL_MANAGED
로 설정합니다. 리전 간 내부 애플리케이션 부하 분산기의 경우 스키마를INTERNAL_MANAGED
로 설정합니다.PROJECT_ID
: Google Cloud 프로젝트의 ID입니다.LB_FORWARDING_RULE
: 부하 분산기의 전달 규칙 이름입니다.
승인 정책을 만들고 YAML 파일을 가져옵니다.
다음 명령어 예시에서는 이전에 만든 정책 파일을 가져와 승인 정책을 만듭니다.
gcloud beta network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=global
리전
리전 외부 애플리케이션 부하 분산기 또는 리전 내부 애플리케이션 부하 분산기를 사용하는 경우 다음 단계에 따라 승인 정책을 만들고 가져옵니다.
특정 요청을 허용하도록 승인 정책 파일을 만듭니다.
다음 예에서는 리전 내부 애플리케이션 부하 분산기의 Google Cloud 리전에서 전달 규칙
LB_FORWARDING_RULE
의authz-policy-allow.yaml
파일을 만듭니다. 이 정책은 요청이 리소스 태그TAG_VALUE
가 있는 VM에서 시작된 경우*.example.com
의 클라이언트만/api/payments
URL 경로에 액세스하도록 허용합니다.$ cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - principals: - suffix: ".example.com" resources: - tagValueIdSet: - ids: "TAG_VALUE" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOF
다음을 바꿉니다.
LB_SCHEME
: 부하 분산 스키마입니다. 리전 외부 애플리케이션 부하 분산기를 사용하는 경우 스킴을EXTERNAL_MANAGED
로 설정합니다. 리전 내부 애플리케이션 부하 분산기를 사용하는 경우 스키마를INTERNAL_MANAGED
로 설정합니다.PROJECT_ID
: Google Cloud 프로젝트의 ID입니다.LOCATION
: Google Cloud 리전입니다.LB_FORWARDING_RULE
: 부하 분산기의 전달 규칙 이름입니다.
승인 정책을 만들고 YAML 파일을 가져옵니다.
다음 명령어 예에서는 이전에 만든 정책 파일을 가져오고
LOCATION
리전에 승인 정책을 만듭니다.gcloud beta network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=LOCATION
서비스 확장 프로그램에 위임하는 승인 정책
시작하기 전에 외부 승인 엔진을 설정합니다. 서비스 확장 프로그램에 대한 자세한 내용은 Cloud Load Balancing 콜아웃 개요를 참고하세요.
전역 및 리전 간
전역 외부 애플리케이션 부하 분산기 또는 리전 간 내부 애플리케이션 부하 분산기를 사용하는 경우 다음 단계에 따라 승인 정책을 만들고 가져옵니다.
특정 요청을 외부 서비스에 위임할 승인 정책 파일을 만듭니다.
다음 예에서는
global
위치에 전달 규칙LB_FORWARDING_RULE
의authz-policy-custom.yaml
파일을 만듭니다. 이 정책은 요청에 비어 있지 않은Authorization
헤더가 포함된 경우/api/payments
URL 경로의 모든 트래픽에 대해AUTHZ_EXTENSION
확장 프로그램을 호출합니다.$ cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - to: operations: - paths: - exact: "/api/payments" when: 'request.headers["Authorization"] != ""' action: CUSTOM customProvider: authzExtension: resources: - "https://networkservices.googleapis.com/v1/projects/PROJECT_ID/locations/global/authzExtensions/AUTHZ_EXTENSION" EOF
다음을 바꿉니다.
LB_SCHEME
: 부하 분산 스키마입니다. 전역 외부 애플리케이션 부하 분산기의 경우 스키마를EXTERNAL_MANAGED
로 설정합니다. 리전 간 내부 애플리케이션 부하 분산기의 경우 스키마를INTERNAL_MANAGED
로 설정합니다.PROJECT_ID
: Google Cloud 프로젝트의 ID입니다.LB_FORWARDING_RULE
: 부하 분산기의 전달 규칙 이름입니다.AUTHZ_EXTENSION
: 승인 확장 프로그램의 이름입니다.
승인 정책을 만들고 YAML 파일을 가져옵니다.
다음 명령어 예시에서는 이전에 만든 정책 파일을 가져와 승인 정책을 만듭니다.
gcloud beta network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=global
리전
리전 외부 애플리케이션 부하 분산기 또는 리전 내부 애플리케이션 부하 분산기를 사용하는 경우 다음 단계에 따라 승인 정책을 만들고 가져옵니다.
특정 요청을 외부 서비스에 위임할 승인 정책 파일을 만듭니다.
다음 예에서는 리전 내부 애플리케이션 부하 분산기의 Google Cloud 리전에서 전달 규칙
LB_FORWARDING_RULE
의authz-policy-custom.yaml
파일을 만듭니다. 이 정책은 요청에 비어 있지 않은Authorization
헤더가 포함된 경우/api/payments
URL 경로의 모든 트래픽에 대해AUTHZ_EXTENSION
확장 프로그램을 호출합니다.$ cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" httpRules: - to: operations: - paths: - exact: "/api/payments" when: 'request.headers["Authorization"] != ""' action: CUSTOM customProvider: authzExtension: resources: - "https://networkservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/authzExtensions/AUTHZ_EXTENSION" EOF
다음을 바꿉니다.
LB_SCHEME
: 부하 분산 스키마입니다. 리전 외부 애플리케이션 부하 분산기의 경우 스키마를EXTERNAL_MANAGED
로 설정합니다. 리전 내부 애플리케이션 부하 분산기의 경우 스키마를INTERNAL_MANAGED
로 설정합니다.PROJECT_ID
: Google Cloud 프로젝트의 ID입니다.LOCATION
: Google Cloud 리전입니다.LB_FORWARDING_RULE
: 부하 분산기의 전달 규칙 이름입니다.AUTHZ_EXTENSION
: 승인 확장 프로그램의 이름입니다.
승인 정책을 만들고 YAML 파일을 가져옵니다.
다음 명령어 예에서는 이전에 만든 정책 파일을 가져오고
LOCATION
리전에 승인 정책을 만듭니다.gcloud beta network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATION
승인 정책 테스트
승인 정책을 테스트하려면 부하 분산기로 트래픽을 전송합니다. 자세한 내용은 다음 페이지를 참고하세요.
- 전역 외부 애플리케이션 부하 분산기를 사용하는 경우 인스턴스로 전송된 트래픽 테스트를 참고하세요.
리전 외부 애플리케이션 부하 분산기를 사용하는 경우 부하 분산기 테스트를 참고하세요.
리전 내부 애플리케이션 부하 분산기를 사용하는 경우 부하 분산기 테스트를 참고하세요.
- 리전 간 내부 애플리케이션 부하 분산기를 사용하는 경우 부하 분산기 테스트를 참고하세요.
Cloud Logging의 승인 정책 로그 이해
요청이 허용되거나 거부될 때 승인 정책이 로깅되는 방식을 알아보려면 다음을 참고하세요.
요청이
ALLOW
정책 또는DENY
정책과 일치하지 않으면DENY
정책이 요청을 허용하고allowed_as_no_deny_policies_matched_request
로 로깅합니다. 반대로ALLOW
정책은 요청을 거부하고denied_as_no_allow_policies_matched_request
로 로깅합니다. 정책 중 하나가 요청을 거부하므로 요청이 거부됩니다.전역 외부 애플리케이션 부하 분산기를 사용하는 경우
statusDetails
가 로그에서denied_by_authz_policy
로 설정됩니다. 아래 예시를 참조하세요.{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "denied_as_no_allow_policies_matched_request" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" proxyStatus: "error=\"http_request_error\"; details=\"denied_by_authz_policy\"" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
리전 내부 애플리케이션 부하 분산기, 리전 외부 애플리케이션 부하 분산기 또는 리전 간 내부 애플리케이션 부하 분산기를 사용하는 경우
proxyStatus
가 로그에서error=\"http_request_error\"; details=\"denied_by_authz_policy\"
로 설정됩니다. 아래 예시를 참조하세요.{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "denied_as_no_allow_policies_matched_request" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" proxyStatus: "error=\"http_request_error\"; details=\"denied_by_authz_policy\"" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
요청이
DENY
정책과 일치하면 요청이 거부되고 요청을 거부한 정책이 로깅됩니다.전역 외부 애플리케이션 부하 분산기를 사용하는 경우
statusDetails
가 로그에서denied_by_authz_policy
로 설정되고 요청을 거부한 정책의 이름이policies
에 로깅됩니다. 아래 예시를 참조하세요.{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "name: "projects/12345567/locations/global/authzPolicies/deny-authz-policy-test"" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" statusDetails: "denied_by_authz_policy" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
리전 내부 애플리케이션 부하 분산기, 리전 외부 애플리케이션 부하 분산기 또는 리전 간 내부 애플리케이션 부하 분산기를 사용하는 경우
proxyStatus
가error=\"http_request_error\"; details=\"denied_by_authz_policy\"
로 설정되고 정책 이름이policies
에 로깅됩니다. 아래 예시를 참조하세요.{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "name: "projects/12345567/locations/$REGION/authzPolicies/deny-authz-policy-test"" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" proxyStatus: "error=\"http_request_error\"; details=\"denied_by_authz_policy\"" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
요청이
DENY
정책과 일치하지 않지만ALLOW
정책과 일치하면 요청이 허용됩니다. 로그에서 이 작업은DENY
정책에 대해allowed_as_no_deny_policies_matched_request
로 로깅됩니다. 요청을 허용한 정책도 로깅됩니다.전역 외부 애플리케이션 부하 분산기를 사용하는 경우 로그에
statusDetails
가 없습니다. 요청을 허용한 정책도policies
에 로깅됩니다. 아래 예시를 참조하세요.{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "name: "projects/12345567/locations/global/authzPolicies/allow-authz-policy-test"" result: "ALLOWED" } ] result: "ALLOWED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
리전 내부 애플리케이션 부하 분산기, 리전 외부 애플리케이션 부하 분산기 또는 리전 간 내부 애플리케이션 부하 분산기를 사용하는 경우 로그에
proxyStatus
필드가 없습니다. 요청을 허용한 정책도policies
에 로깅됩니다. 다음 예를 참고하세요.{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "name: "projects/12345567/locations/$REGION/authzPolicies/allow-authz-policy-test"" result: "ALLOWED" } ] result: "ALLOWED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }