Esta página descreve 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 aplicativos.
Para delegar a autorização ao IAP e ao Identity and Access Management (IAM), você autoriza o tráfego para uma regra de encaminhamento com base nas identidades do IAM ou do usuário final para balanceadores de carga gerenciados. Isso permite aplicar o controle de acesso baseado em IAP aos seus 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 do regras de encaminhamento não têm o IAP ativado. Se o IAP estiver ativado, você receberá um erro ao enviar configuração do Terraform.
- Ative a API Network Services.
Crie a política de autorização e ative o IAP
Para criar uma política de autorização, você cria um arquivo de política que define o destino e as regras e, em seguida, ativa o IAP na regra de encaminhamento.
gcloud
- Execute o comando a seguir para preparar um arquivo
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
- 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 da 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": [], "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 @settings.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 da regra de encaminhamento.
- AUTHZ_POLICY_NAME: o nome da política de autorização.
Aplicar permissões a recursos
É possível usar a API IAP para aplicar as permissões do IAM a recursos individuais em um projeto protegido pelo IAP. As permissões do IAM concedidas em determinado nível se aplicam a todos níveis abaixo dele. Por exemplo, uma permissão concedida no nível do projeto se aplica a todos os recursos do Google Cloud no projeto.
Veja a seguir 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 a seguir um exemplo de arquivo YAML:
policy:
bindings:
members: user:example@example.com
role: roles/iap.httpsResourceAccessor
Atualize a permissão para quem pode acessar o recurso da 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ão no nível da organização
gcloud alpha iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION
Configurar permissão no nível da pasta
gcloud alpha iap web set-iam-policy POLICY_FILE --folder=FOLDER
Configurar a permissão no nível do projeto
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=iap_web
Configurar a 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 a 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 a 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
Configure a 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
API
Configurar permissão no nível da organização
organization/ORGANIZATION
Configurar permissão no nível da pasta
folders/FOLDER
Configurar a permissão no nível do projeto
projects/PROJECT_ID
Configurar a permissão para todas as regras de encaminhamento globais em um projeto
projects/PROJECT_ID/forwarding_rule
Configurar a permissão para todas as regras de encaminhamento em um projeto em uma região
projects/PROJECT_ID/iap_web/forwarding_rule-REGION
Configurar a permissão para uma regra de encaminhamento global específica em um projeto
projects/PROJECT_ID/iap_web/forwarding_rule/services/SERVICE
Configure a 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
, é possível criar o arquivo JSON executando o comando
a seguir. Atualize os valores conforme necessário.
cat << EOF > policy.json { "policy": { "bindings": { "members": "user:example@example.com", "role": "roles/iap.httpsResourceAccessor", } } } EOF