認可ポリシーを使用して IAP と IAM に認可を委任する

このページでは、認可ポリシーを使用して、アプリケーション ロードバランサの認可ポリシーで Identity-Aware Proxy(IAP)をカスタム認可エンジンとして指定する方法について説明します。

IAP と Identity and Access Management(IAM)に認可を委任するには、マネージド ロードバランサの IAM またはエンドユーザー ID に基づいて転送ルールへのトラフィックを承認します。これにより、バックエンド サービスに IAP ベースのアクセス制御を適用できます。

始める前に

  • 認可ポリシーのコンセプトを理解します。
  • 転送ルールのバックエンド サービスで IAP が有効になっていないことを確認します。IAP が有効になっている場合、構成を送信するとエラーが発生します。
  • Network Services API を有効にします

認可ポリシーを作成し、IAP を有効にする

認可ポリシーを作成するには、ターゲットとルールを定義するポリシー ファイルを作成し、転送ルールで IAP を有効にします。

gcloud

  1. 次のコマンドを実行して policy.yaml ファイルを準備します。
$ cat << EOF > policy.yaml
action: CUSTOM
description: authz policy with Cloud IAP
name: AUTHZ_POLICY_NAME
customProvider:
  cloudIap: {}
target:
  loadBalancingScheme: EXTERNAL_MANAGED
  resources:
  - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID
EOF
  1. 転送ルールで IAP を有効にするには、次のコマンドを実行します。
gcloud beta network-security authz-policies import AUTHZ_POLICY_NAME \
--source=policy.yaml \
--location=LOCATION \
--project=PROJECT_ID

以下を置き換えます。

  • PROJECT_ID: Google Cloud プロジェクト ID。
  • LOCATION: リソースが配置されているリージョン。
  • FORWARDING_RULE_ID: 転送ルール リソースの ID。
  • AUTHZ_POLICY_NAME: 認可ポリシーの名前。

API

  1. 次のコマンドを実行して policy.json ファイルを準備します。
    cat << EOF > policy.json
    {
    "name": "AUTHZ_POLICY_NAME",
    "target": {
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "resources": [
    "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID"
    ],
    },
    "action": "CUSTOM",
    "httpRules": [],
    "customProvider": {
    "cloudIap": {}
    }
    }
    EOF
    
  2. 転送ルールで IAP を有効にするには、次のコマンドを実行します。

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://networksecurity.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
    

    以下を置き換えます。

    • PROJECT_ID: Google Cloud プロジェクト ID。
    • LOCATION: リソースが配置されているリージョン。
    • FORWARDING_RULE_ID: 転送ルール リソースの ID。
    • AUTHZ_POLICY_NAME: 認可ポリシーの名前。

リソースに権限を適用する

IAP API を使用すると、IAP で保護されたプロジェクトの個々のリソースに IAM 権限を適用できます。特定のレベルで付与された IAM 権限は、それより下位にあるすべてのレベルに適用されます。たとえば、プロジェクト レベルで付与された権限は、プロジェクト内のすべての Google Cloud リソースに適用されます。

権限を構成するコマンドの例を次に示します。詳細については、gcloud alpha iap web set-iam-policy をご覧ください。

gcloud

コマンドの例で、POLICY_FILE は、有効なポリシーを含む YAML 形式のファイルのパスに置き換えます。YAML ファイルの例を次に示します。

policy:
  bindings:
    members: user:example@example.com
    role: roles/iap.httpsResourceAccessor

転送ルール リソースにアクセスできるユーザーの権限を更新する

gcloud alpha iap web set-iam-policy POLICY_FILE [--organization=ORGANIZATION \
--folder=FOLDER --project=/PROJECT_ID \
--resource-type=RESOURCE_TYPE --service=SERVICE]

組織レベルで権限を構成する

gcloud alpha iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION

フォルダレベルで権限を構成する

gcloud alpha iap web set-iam-policy POLICY_FILE --folder=FOLDER

プロジェクト レベルで権限を構成する

gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=iap_web

プロジェクト内のすべてのグローバル転送ルールの権限を構成する

gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=forwarding_rule

リージョン内のプロジェクト内のすべての転送ルールの権限を構成する

gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \
--resource-type=forwarding_rule --region=REGION

プロジェクト内の特定のグローバル転送ルールの権限を構成する

gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \
--resource-type=forwarding_rule --service=SERVICE

リージョン内のプロジェクトの特定の転送ルールの権限を構成する

gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \
--resource-type=forwarding_rule --service=SERVICE --region=REGION

API

組織レベルで権限を構成する

organization/ORGANIZATION

フォルダレベルで権限を構成する

folders/FOLDER

プロジェクト レベルで権限を構成する

projects/PROJECT_ID

プロジェクト内のすべてのグローバル転送ルールの権限を構成する

projects/PROJECT_ID/forwarding_rule

リージョン内のプロジェクト内のすべての転送ルールの権限を構成する

projects/PROJECT_ID/iap_web/forwarding_rule-REGION

プロジェクト内の特定のグローバル転送ルールの権限を構成する

projects/PROJECT_ID/iap_web/forwarding_rule/services/SERVICE

リージョン内のプロジェクトの特定の転送ルールの権限を構成する

projects/PROJECT_ID/iap_web/forwarding_rule-REGION/services/SERVICE

認可ポリシーを設定する

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d @policy.json \
"https://iap.googleapis.com/v1/RESOURCE_NAME:setIamPolicy"

policy.json の場合、次のコマンドを実行して JSON ファイルを作成できます。必要に応じて値を更新します。

cat << EOF > policy.json
{
  "policy": {
      "bindings": {
            "members": "user:example@example.com",
            "role": "roles/iap.httpsResourceAccessor",
        }
    }
}
EOF