このページでは、認可ポリシーを使用して、アプリケーション ロードバランサの認可ポリシーで Identity-Aware Proxy(IAP)をカスタム認可エンジンとして指定する方法について説明します。
IAP と Identity and Access Management(IAM)に認可を委任するには、マネージド ロードバランサの IAM またはエンドユーザー ID に基づいて転送ルールへのトラフィックを認可します。これにより、バックエンド サービスに IAP ベースのアクセス制御を適用できます。
始める前に
認可ポリシーのコンセプトを理解します。
転送ルールのバックエンド サービスで IAP が有効になっていないことを確認します。IAP が有効になっている場合、構成を送信するとエラーが発生します。
認可ポリシーを作成し、IAP を有効にする
認可ポリシーを作成するには、ターゲットとルールを定義するポリシー ファイルを作成し、転送ルールで IAP を有効にします。ポリシー ファイルの httpRules セクションで条件を定義することで、特定のリクエストにのみ IAP を適用できます。httpRules セクションを省略すると、すべてのリクエストに IAP が適用されます。
gcloud
次のコマンドを実行して
policy.yamlファイルを準備します。このポリシーでは、IP アドレス範囲が10.0.0.0/24のクライアントが転送ルールで IAP を有効にすることを許可します。$ cat << EOF > policy.yaml action: CUSTOM description: authz policy with Cloud IAP name: AUTHZ_POLICY_NAME httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: 24 customProvider: cloudIap: {} target: loadBalancingScheme: EXTERNAL_MANAGED resources: - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID EOF次のコマンドを実行して、転送ルールで IAP を有効にします。
gcloud 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
次のコマンドを実行して
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": [ { "from": { "sources": { "ipBlocks": [ { "prefix": "10.0.0.0", "length": 24 } ] } } } ], "customProvider": { "cloudIap": {} } } EOF次のコマンドを実行して、転送ルールで IAP を有効にします。
curl -X PATCH \\ -H "Authorization: Bearer $(gcloud auth print-access-token)" \\ -H "Accept: application/json" \\ -H "Content-Type: application/json" \\ -d @policy.json \\ "https://networksecurity.googleapis.com/v1/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 iap web set-iam-policy をご覧ください。
gcloud
次のコマンド例で、POLICY_FILE は、有効なポリシーを含む YAML 形式のファイルのパスに置き換えます。YAML ファイルの例を次に示します。
bindings:
members: user:example@example.com
role: roles/iap.httpsResourceAccessor
転送ルールリソースにアクセスできるユーザーの権限を更新する
gcloud iap web set-iam-policy POLICY_FILE [--organization=ORGANIZATION \ --folder=FOLDER --project=PROJECT_ID \ --resource-type=RESOURCE_TYPE --service=SERVICE]
組織レベルで権限を構成する
gcloud iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION
フォルダレベルで権限を構成する
gcloud iap web set-iam-policy POLICY_FILE --folder=FOLDER
プロジェクト レベルで権限を構成する
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=iap_web
プロジェクト内のすべてのグローバル転送ルールの権限を構成する
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=forwarding_rule
リージョン内のプロジェクトのすべての転送ルールの権限を構成する
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --region=REGION
プロジェクト内の特定のグローバル転送ルールの権限を構成する
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE
リージョン内のプロジェクトで特定の転送ルールの権限を構成する
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE --region=REGION
次のように置き換えます。
POLICY_FILE: 有効なポリシーを含む YAML ファイルのパス。
ORGANIZATION: 組織の ID。
FOLDER: アプリケーションを含むフォルダ。
PROJECT_ID: Google Cloud プロジェクト ID。
RESOURCE_TYPE: IAP リソースタイプ。リソースタイプは、
app-engine、iap_web、compute、organization、folderのいずれかにする必要があります。SERVICE: 転送ルールの ID または名前。
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
{
"bindings": {
"members": "user:example@example.com",
"role": "roles/iap.httpsResourceAccessor",
}
}
EOF
次のように置き換えます。
ORGANIZATION: 組織の ID。
FOLDER: アプリケーションを含むフォルダ。
PROJECT_ID: Google Cloud プロジェクト ID。
REGION: リソースが配置されているリージョン。
SERVICE: 転送ルールの ID または名前。