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

必須。ID。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 ルールのリスト。ポリシーが一致するのは、1 つ以上の HTTP ルールがリクエストと一致する場合、またはポリシーに HTTP ルールが指定されていない場合です。許可または拒否アクションには、少なくとも 1 つの HTTP ルールが必要です。ルールは 5 つまでです。

action

enum (AuthzAction)

必須。ALLOWDENYCUSTOM のいずれか。

アクションが CUSTOM の場合は、customProvider を指定する必要があります。

アクションが ALLOW の場合、ポリシーに一致するリクエストのみが許可されます。

アクションが DENY の場合、ポリシーに一致するリクエストのみが拒否されます。

リクエストが届くと、ポリシーは次の順序で評価されます。

  1. リクエストに一致する CUSTOM ポリシーがある場合、カスタム認可プロバイダを使用して CUSTOM ポリシーが評価されます。プロバイダがリクエストを拒否すると、リクエストは拒否されます。

  2. リクエストに一致する DENY ポリシーがある場合、リクエストは拒否されます。

  3. リソースに ALLOW ポリシーがない場合、または ALLOW ポリシーのいずれかがリクエストと一致する場合、リクエストは許可されます。

  4. ALLOW アクションで構成された AuthzPolicy がリクエストと一致しない場合、リクエストはデフォルトで拒否されます。

customProvider

object (CustomProvider)

省略可。アクションが CUSTOM の場合は必須。認可の判断を Cloud IAP または Service Extensions に委任できます。cloudIap または authzExtension のいずれかを指定する必要があります。

Target

このポリシーを適用するターゲットのセットを指定します。

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)

省略可。リクエストの 1 つ以上のターゲットのプロパティを記述します。

when

string

省略可。アクションで満たす必要のある条件を記述する CEL 式。CEL 式の結果は、from および to と AND 演算されます。使用可能な属性の一覧については、CEL 言語リファレンスをご覧ください。

From

リクエストの 1 つ以上のソースのプロパティを記述します。

JSON 表現
{
  "sources": [
    {
      object (RequestSource)
    }
  ],
  "notSources": [
    {
      object (RequestSource)
    }
  ]
}
フィールド
sources[]

object (RequestSource)

省略可。リクエスト送信元のプロパティを記述します。sources または notSources の少なくとも 1 つを指定する必要があります。ソースは 5 つまでです。一致は、(sources または notSources 内の)任意のソースがリクエストと一致する場合に発生します。1 つのソース内では、フィールド間の一致は AND セマンティクスに従い、1 つのフィールド内の一致は OR セマンティクスに従います。つまり、任意のプリンシパルと任意の ipBlock が一致した場合、一致が発生します。

notSources[]

object (RequestSource)

省略可。リクエスト ソースで否定されるプロパティを記述します。このフィールドで指定された条件と一致しないソースからのリクエストと一致します。sources または notSources の少なくとも 1 つを指定する必要があります。

RequestSource

単一のソースのプロパティを記述します。

JSON 表現
{
  "principals": [
    {
      object (StringMatch)
    }
  ],
  "resources": [
    {
      object (RequestResource)
    }
  ]
}
フィールド
principals[]

object (StringMatch)

省略可。クライアント証明書から派生した ID のリスト。転送ルールまたは Gateway で相互 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 の場合、完全一致、接頭辞、接尾辞、包含の一致で大文字と小文字を区別しないことを示します。たとえば、マッチャー data が true に設定されている場合、入力文字列 Datadata の両方に一致します。

共用体フィールド match_pattern

match_pattern は次のいずれかになります。

exact

string

入力文字列は、ここで指定した文字列と完全に一致している必要があります。

例:

  • abc は値 abc にのみ一致します。
prefix

string

入力文字列には、ここで指定した接頭辞が必要です。注: 空の接頭辞は使用できません。代わりに正規表現を使用してください。

例:

  • abc は値 abc.xyz と一致します。
suffix

string

入力文字列には、ここで指定した接尾辞が必要です。注: 空の接頭辞は使用できません。代わりに正規表現を使用してください。

例:

  • abc は値 xyz.abc と一致します。
contains

string

入力文字列には、ここで指定したサブ文字列が含まれている必要があります。注: 空の包含の一致は許可されません。代わりに正規表現を使用してください。

例:

  • abc は値 xyz.abc.def と一致します。

RequestResource

内部アプリケーション ロードバランサにアクセスするクライアント VM リソースのプロパティを記述します。

JSON 表現
{
  "tagValueIdSet": {
    object (TagValueIdSet)
  },
  "iamServiceAccount": {
    object (StringMatch)
  }
}
フィールド
tagValueIdSet

object (TagValueIdSet)

省略可。リクエストの送信元 VM に関連付けられた Resource Manager タグ値と照合するリソースタグ値の永続 ID のリスト。

iamServiceAccount

object (StringMatch)

省略可。リクエストを送信した VM のソース サービス アカウントと照合する IAM サービス アカウント。

TagValueIdSet

リクエストの送信元 VM に関連付けられた Resource Manager タグ値と照合するリソースタグ値の永続 ID のセットを記述します。

JSON 表現
{
  "ids": [
    string
  ]
}
フィールド
ids[]

string (int64 format)

必須。リクエストの送信元 VM に関連付けられた Resource Manager タグ値と照合するリソースタグ値の永続 ID のリスト。 一致は AND セマンティクスに従います。つまり、すべての ID が一致する必要があります。上限は 5 個です。

to

リクエストの 1 つ以上のターゲットのプロパティを記述します。

JSON 表現
{
  "operations": [
    {
      object (RequestOperation)
    }
  ],
  "notOperations": [
    {
      object (RequestOperation)
    }
  ]
}
フィールド
operations[]

object (RequestOperation)

省略可。リクエストの 1 つ以上のターゲットのプロパティを記述します。operations または notOperations の少なくとも 1 つを指定する必要があります。オペレーションは 5 個まで指定できます。一致は、(operations または notOperations 内の)任意のオペレーションが一致すると発生します。オペレーション内での一致は、フィールド間の AND セマンティクスとフィールド内の OR セマンティクスに従います。つまり、任意のパス、任意のヘッダー、任意のメソッドが一致すると、一致が発生します。

notOperations[]

object (RequestOperation)

省略可。リクエストのターゲットで否定されるプロパティを記述します。このフィールドで指定された条件に一致しないオペレーションのリクエストに一致します。operations または notOperations の少なくとも 1 つを指定する必要があります。

RequestOperation

リクエストの 1 つ以上のターゲットのプロパティを記述します。

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

このポリシーに適用されるアクション。指定できる値は、ALLOWDENYCUSTOM です。

列挙型
AUTHZ_ACTION_UNSPECIFIED 未指定のアクション。
ALLOW リクエストをバックエンドに転送することを許可します。
DENY リクエストを拒否し、HTTP 404 をクライアントに返します。
CUSTOM 認可の判断を外部認可エンジンに委任します。

CustomProvider

認可の判断を Cloud IAP または Service Extensions に委任できます。

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

1 つの AuthzPolicy を削除します。

get

1 つの AuthzPolicy の詳細を取得します。

list

指定されたプロジェクトとロケーションでの AuthzPolicy を一覧取得します。

patch

単一の AuthzPolicy のパラメータを更新します。