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 na 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 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

  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.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
  1. 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

  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.1",
                "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/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 ou folder.
  • 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.