Use políticas de autorização para delegar autorização ao IAP e ao IAM

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 em IAP aos seus serviços de back-end.

Antes de começar

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 as CAs 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

  1. Execute o comando a seguir para preparar um arquivo policy.yaml. A política permite que clientes com um intervalo de endereços IP de 10.0.0.0/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.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
    
  2. Execute o comando a seguir para ativar o IAP em uma regra de encaminhamento.

    gcloud 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

  1. 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.0",
                   "length": 24
                 }
               ]
             }
           }
         }
     ],
     "customProvider": {
         "cloudIap": {}
     }
    }
    EOF
    
  2. 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/v1/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.

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 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 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 iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION

Configure a autorização ao nível da pasta

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

Configure a autorização ao nível do projeto

gcloud 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 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 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 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 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 ou folder.
  • SERVICE: o nome ou o ID 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.