Nesta página, descrevemos como usar políticas de autorização para designar o Identity-Aware Proxy (IAP) como o mecanismo de autorização personalizado em uma política de autorização para balanceadores de carga de aplicativo.
Para delegar a autorização ao IAP e ao Identity and Access Management (IAM), autorize o tráfego para uma regra de encaminhamento com base no IAM ou nas identidades de usuários finais para balanceadores de carga gerenciados. Isso permite aplicar o controle de acesso baseado na IAP aos serviços de back-end.
Antes de começar
- Entenda os conceitos das políticas de autorização.
- Verifique se os serviços de back-end das regras de encaminhamento não têm o IAP ativado. Se o IAP estiver ativado, você vai receber um erro ao enviar a configuração.
- Ative a API Network Services.
Criar a política de autorização e ativar o IAP
Para criar uma política de autorização, crie um arquivo de política que defina o
destino e as regras e ative o IAP na regra de encaminhamento. Você
pode aplicar o IAP apenas a solicitações específicas definindo
condições na seção httpRules
do arquivo de política. Se a seção httpRules
for omitida, a IAP será aplicada a todas as solicitações.
gcloud
- Execute o comando a seguir para preparar um arquivo
policy.yaml
. A política permite que clientes com um intervalo de endereços IP de10.0.0.1/24
ativem o IAP em uma regra de encaminhamento.
$ cat << EOF > policy.yaml
action: CUSTOM
description: authz policy with Cloud IAP
name: AUTHZ_POLICY_NAME
httpRules:
- from:
sources:
- ipBlocks:
- prefix: "10.0.0.1"
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
- Execute o comando a seguir para ativar o IAP em uma regra de encaminhamento.
gcloud beta network-security authz-policies import AUTHZ_POLICY_NAME \ --source=policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Substitua:
- PROJECT_ID: o ID do projeto do Google Cloud .
- LOCATION: a região em que o recurso está localizado.
- FORWARDING_RULE_ID: o ID do recurso de regra de encaminhamento.
- AUTHZ_POLICY_NAME: o nome da política de autorização.
API
- Execute o comando a seguir para preparar um arquivo
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.1", "length": "24" } ] } } } ], "customProvider": { "cloudIap": {} } } EOF
Execute o comando a seguir para ativar o IAP em uma regra de encaminhamento.
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/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
Substitua:
- PROJECT_ID: o ID do projeto do Google Cloud .
- LOCATION: a região em que o recurso está localizado.
- FORWARDING_RULE_ID: o ID do recurso de regra de encaminhamento.
- AUTHZ_POLICY_NAME: o nome da política de autorização.
Aplicar permissões aos recursos
É possível usar a API do IAP para aplicar permissões do IAM a recursos individuais em um projeto protegido pelo IAP. As permissões do IAM concedidas em um determinado nível se aplicam a todos os níveis abaixo dele. Por exemplo, uma permissão concedida no nível do projeto se aplica a todos os recursos Google Cloud do projeto.
Confira alguns exemplos de comandos para configurar permissões. Para mais informações, consulte gcloud alpha iap web set-iam-policy
.
gcloud
Nos comandos de exemplo, substitua POLICY_FILE pelo caminho para um arquivo formatado em YAML que contenha uma política válida. Confira um exemplo de arquivo YAML:
bindings:
members: user:example@example.com
role: roles/iap.httpsResourceAccessor
Atualizar a permissão de quem pode acessar o recurso de regra de encaminhamento
gcloud alpha iap web set-iam-policy POLICY_FILE [--organization=ORGANIZATION \ --folder=FOLDER --project=/PROJECT_ID \ --resource-type=RESOURCE_TYPE --service=SERVICE]
Configurar permissões no nível da organização
gcloud alpha iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION
Configurar permissões no nível da pasta
gcloud alpha iap web set-iam-policy POLICY_FILE --folder=FOLDER
Configurar permissões no nível do projeto
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=iap_web
Configurar permissão para todas as regras de encaminhamento globais em um projeto
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=forwarding_rule
Configurar permissão para todas as regras de encaminhamento em um projeto em uma região
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --region=REGION
Configurar permissão para uma regra de encaminhamento global específica em um projeto
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE
Configurar permissão para uma regra de encaminhamento específica em um projeto em uma região
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE --region=REGION
Substitua:
- POLICY_FILE: o caminho para um arquivo YAML que contém uma política válida.
- ORGANIZATION: o ID da sua organização.
- FOLDER: a pasta que contém seu aplicativo.
- PROJECT_ID: o ID do projeto do Google Cloud .
- RESOURCE_TYPE: o tipo de recurso da IAP. O tipo de recurso precisa ser
app-engine
,iap_web
,compute
,organization
oufolder
. - SERVICE: o ID ou nome da regra de encaminhamento.
- REGION: a região em que o recurso está localizado.
API
Configurar permissões no nível da organização
organization/ORGANIZATION
Configurar permissões no nível da pasta
folders/FOLDER
Configurar permissões no nível do projeto
projects/PROJECT_ID
Configurar permissão para todas as regras de encaminhamento globais em um projeto
projects/PROJECT_ID/forwarding_rule
Configurar permissão para todas as regras de encaminhamento em um projeto em uma região
projects/PROJECT_ID/iap_web/forwarding_rule-REGION
Configurar permissão para uma regra de encaminhamento global específica em um projeto
projects/PROJECT_ID/iap_web/forwarding_rule/services/SERVICE
Configurar permissão para uma regra de encaminhamento específica em um projeto em uma região
projects/PROJECT_ID/iap_web/forwarding_rule-REGION/services/SERVICE
Definir a política de autorização
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"
Para policy.json
, crie o arquivo JSON executando o seguinte
comando. Atualize os valores conforme necessário.
cat << EOF > policy.json { "bindings": { "members": "user:example@example.com", "role": "roles/iap.httpsResourceAccessor", } } EOF
Substitua:
- ORGANIZATION: o ID da sua organização.
- FOLDER: a pasta que contém seu aplicativo.
- PROJECT_ID: o ID do projeto do Google Cloud .
- REGION: a região em que o recurso está localizado.
- SERVICE: o ID ou nome da regra de encaminhamento.