Esta página descreve como usar políticas de autorização para designar o Identity-Aware Proxy (IAP) como o motor de autorização personalizado numa política de autorização para equilibradores de carga de aplicações.
Para delegar a autorização à IAP e à gestão de identidade e de acesso (IAM), autoriza o tráfego para uma regra de encaminhamento com base na IAM ou nas identidades de utilizadores finais para equilibradores de carga geridos. Isto permite-lhe aplicar o controlo de acesso baseado na IAP aos seus serviços de back-end.
Antes de começar
- Compreenda os conceitos das políticas de autorização.
- Certifique-se de que os serviços de back-end das regras de encaminhamento não têm o IAP ativado. Se as IAPs estiverem ativadas, recebe um erro quando envia a sua configuração.
- Ative a API Network Services.
Crie a política de autorização e ative o IAP
Para criar uma política de autorização, crie um ficheiro de política que defina o destino e as regras e, em seguida, ative o IAP na regra de encaminhamento. Pode optar por aplicar a IAP apenas a pedidos específicos definindo condições na secção httpRules
do ficheiro de políticas. Se a secção httpRules
for omitida, a IAP é aplicada a todos os pedidos.
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.
Aplique autorizações a recursos
Pode usar a API IAP para aplicar autorizações da IAM a recursos individuais num projeto protegido pelo IAP. As autorizações de IAM concedidas a um determinado nível aplicam-se a todos os níveis abaixo. Por exemplo, uma autorização concedida ao nível do projeto aplica-se a todos os Google Cloud recursos no projeto.
Seguem-se alguns exemplos de comandos para configurar autorizaçõ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 ficheiro formatado em YAML que contenha uma política válida. Segue-se um exemplo de um ficheiro YAML:
bindings:
members: user:example@example.com
role: roles/iap.httpsResourceAccessor
Atualize a autorização para quem pode aceder ao 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]
Configure a autorização ao nível da organização
gcloud alpha iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION
Configure a autorização ao nível da pasta
gcloud alpha iap web set-iam-policy POLICY_FILE --folder=FOLDER
Configure a autorização ao nível do projeto
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=iap_web
Configure a autorização para todas as regras de encaminhamento globais num projeto
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=forwarding_rule
Configure a autorização para todas as regras de encaminhamento num projeto numa região
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --region=REGION
Configure a autorização para uma regra de encaminhamento global específica num projeto
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE
Configure a autorização para uma regra de encaminhamento específica num projeto numa região
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE --region=REGION
Substitua o seguinte:
- POLICY_FILE: o caminho para um ficheiro YAML que contém uma política válida.
- ORGANIZATION: o ID da sua organização.
- FOLDER: a pasta que contém a sua aplicação.
- PROJECT_ID: O Google Cloud ID do projeto.
- RESOURCE_TYPE: o tipo de recurso de CNA. O tipo de recurso tem de ser
app-engine
,iap_web
,compute
,organization
oufolder
. - SERVICE: o ID ou o nome da regra de encaminhamento.
- REGION: a região onde o recurso está localizado.
API
Configure a autorização ao nível da organização
organization/ORGANIZATION
Configure a autorização ao nível da pasta
folders/FOLDER
Configure a autorização ao nível do projeto
projects/PROJECT_ID
Configure a autorização para todas as regras de encaminhamento globais num projeto
projects/PROJECT_ID/forwarding_rule
Configure a autorização para todas as regras de encaminhamento num projeto numa região
projects/PROJECT_ID/iap_web/forwarding_rule-REGION
Configure a autorização para uma regra de encaminhamento global específica num projeto
projects/PROJECT_ID/iap_web/forwarding_rule/services/SERVICE
Configure a autorização para uma regra de encaminhamento específica num projeto numa região
projects/PROJECT_ID/iap_web/forwarding_rule-REGION/services/SERVICE
Defina 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 o policy.json
, pode criar o ficheiro 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 o seguinte:
- ORGANIZATION: o ID da sua organização.
- FOLDER: a pasta que contém a sua aplicação.
- PROJECT_ID: O Google Cloud ID do projeto.
- REGION: a região onde o recurso está localizado.
- SERVICE: o ID ou o nome da regra de encaminhamento.