Faça a gestão das associações de funções condicionais

Este tópico descreve como adicionar, modificar e remover associações de funções condicionais nas suas políticas de autorização da gestão de identidade e de acesso (IAM).

Antes de começar

  • Enable the IAM API.

    Enable the API

  • Leia a vista geral das condições do IAM para compreender as noções básicas das associações de funções condicionais do IAM.

  • Reveja a referência de atributos para saber mais sobre os diferentes atributos de condição que podem ser usados numa expressão.

Funções necessárias

Para gerir associações de funções condicionais na política de autorização de um recurso, precisa de autorizações para obter o recurso e para obter e definir a política de autorização do recurso. Estas autorizações têm o seguinte formato, em que SERVICE é o nome do serviço proprietário do recurso e RESOURCE_TYPE é o nome do tipo de recurso ao qual quer gerir o acesso:

  • SERVICE.RESOURCE_TYPE.get
  • SERVICE.RESOURCE_TYPE.getIamPolicy
  • SERVICE.RESOURCE_TYPE.setIamPolicy

Por exemplo, para gerir associações de funções condicionais na política de permissões de um projeto, precisa das seguintes autorizações:

  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

Para obter as autorizações necessárias, peça ao seu administrador para lhe conceder uma função predefinida ou personalizada que inclua as autorizações. Por exemplo, o seu administrador pode conceder-lhe a função de administrador de segurança (roles/iam.securityAdmin), que inclui autorizações para obter quase todos osTrusted Cloud recursos e gerir as respetivas políticas de autorização.

Adicione uma associação de função condicional a uma política

As associações de funções condicionais podem ser adicionadas a políticas de autorização novas ou existentes para controlar ainda mais o acesso aos recursos Trusted Cloud by S3NS . Esta secção mostra como adicionar uma condição baseada no tempo simples a uma política de permissão existente através da Trusted Cloud consola, da CLI Google Cloud e da API REST.

Para adicionar uma associação de função condicional a uma política de autorização existente:

Consola

  1. Na Trusted Cloud consola, aceda à página IAM.

    Aceda à página IAM

  2. Na lista de diretores, localize o diretor pretendido e clique no botão .

  3. No painel Editar autorizações, localize a função pretendida para configurar uma condição. Em seguida, em Condição do IAM (opcional), clique em Adicionar condição do IAM.

  4. No painel Editar condição, introduza um título e uma descrição opcional para a condição.

  5. Pode adicionar uma expressão de condição através do Criador de condições ou do Editor de condições. O criador de condições oferece uma interface interativa para selecionar o tipo de condição, o operador e outros detalhes aplicáveis sobre a expressão pretendidos. O editor de condições oferece uma interface baseada em texto para introduzir manualmente uma expressão através da sintaxe do IEC.

    Construtor de condições:

    1. No menu pendente Tipo de condição, selecione Acesso a expirar.
    2. No menu pendente Operador, selecione por.
    3. No menu pendente Hora, clique no botão para selecionar um intervalo de datas e horas.
    4. Clique em Guardar para aplicar a condição.
    5. Quando o painel Editar condição estiver fechado, clique novamente em Guardar no painel Editar autorizações para atualizar a política de permissão.

    Editor de condições:

    1. Clique no separador Editor de condições e introduza a seguinte expressão (substituindo a indicação de tempo pela sua):

      request.time < timestamp("2019-12-31T12:00:00.000Z")
    2. Depois de introduzir a expressão, pode optar por validar a sintaxe CEL clicando em Executar Linter acima da caixa de texto na parte superior direita.

    3. Clique em Guardar para aplicar a condição.

    4. Quando o painel Editar condição estiver fechado, clique novamente em Guardar no painel Editar autorizações para atualizar a política de permissão.

gcloud

As políticas de permissão são definidas através do padrão read-modify-write.

Execute o comando gcloud projects get-iam-policy para obter a política de permissão atual do projeto. No exemplo seguinte, a versão JSON da política de permissão é transferida para um caminho no disco.

Comando:

gcloud projects get-iam-policy project-id --format json > file-path

O formato JSON da política de autorização é transferido:

{
  "bindings": [
    {
      "members": [
        "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
      ],
      "role": "roles/iam.securityReviewer"
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 1
}

Tenha em atenção o version atual da política de permissão, que é 1. Para configurar a política de permissão com acesso expirável, adicione a seguinte expressão de condição realçada (substituindo a data/hora pela sua). A CLI gcloud atualiza a versão automaticamente:

{
  "bindings": [
    {
      "members": [
        "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
      ],
      "role": "roles/iam.securityReviewer",
      "condition": {
          "title": "Expires_2019",
          "description": "Expires at noon on 2019-12-31",
          "expression":
            "request.time < timestamp('2019-12-31T12:00:00Z')"
      }
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

Em seguida, defina a nova política de permissão executando o comando gcloud projects set-iam-policy:

gcloud projects set-iam-policy project-id file-path

A nova política de autorização é aplicada e a associação de funções de travis@example.com expira à hora especificada.

REST

Use o padrão read-modify-write para permitir o acesso até uma hora específica.

Primeiro, leia a política de permissão para o projeto:

O método projects.getIamPolicy da API Resource Manager obtém a política de autorização de um projeto.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: O ID do seu Trusted Cloud projeto. Os IDs dos projetos são strings alfanuméricas, como my-project.
  • POLICY_VERSION: a versão da política a ser devolvida. Os pedidos devem especificar a versão da política mais recente, que é a versão 3 da política. Consulte o artigo Especificar uma versão da política ao obter uma política para ver detalhes.

Método HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy

Corpo JSON do pedido:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
      ]
    },
    {
      "role": "roles/iam.securityReviewer",
      "members": [
        "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
      ]
    }
  ]
}

Tenha em atenção o version atual da política de permissão, que é 1.

Em seguida, modifique a política de permissão para que permita o acesso até uma hora específica. Certifique-se de que altera o campo version para o valor 3:

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
      ]
    },
    {
      "role": "roles/iam.securityReviewer",
      "condition": {
        "title": "Expires_2019",
        "description": "Expires at noon on 2019-12-31",
        "expression": "request.time < timestamp('2019-12-31T12:00:00Z')"
      },
      "members": [
        "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
      ]
    }
  ]
}

Por último, escreva a política de permissão atualizada:

O método projects.setIamPolicy da API Resource Manager define a política de autorização no pedido como a nova política de autorização do projeto.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: O ID do seu Trusted Cloud projeto. Os IDs dos projetos são strings alfanuméricas, como my-project.

Método HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

Corpo JSON do pedido:

{
  "policy": {
    "version": 3,
    "etag": "BwWKmjvelug=",
    "bindings": [
      {
        "role": "roles/owner",
        "members": [
          "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
        ]
      },
      {
        "role": "roles/iam.securityReviewer",
        "members": [
          "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
        ],
        "condition": {
          "title": "Expires_July_1_2020",
          "description": "Expires on July 1, 2020",
          "expression":
            "request.time < timestamp('2020-07-01T00:00:00.000Z')"
        }
      }
    ]
  }
}

Para enviar o seu pedido, expanda uma destas opções:

A resposta contém a política de permissão atualizada.


Modifique uma associação de funções condicional existente

Depois de criar uma associação de função condicional, pode alterar a expressão de condição em qualquer altura. Esta secção mostra como atualizar uma condição baseada no tempo numa política de autorização existente através daTrusted Cloud consola, da CLI Google Cloud e da API REST.

Para modificar uma associação de função condicional numa política de autorização existente:

Consola

  1. Na Trusted Cloud consola, aceda à página IAM.

    Aceda à página IAM

  2. Na lista de diretores, localize o diretor pretendido e clique no botão .

  3. No painel Editar autorizações, localize a função pretendida para configurar uma condição. Em seguida, em Condição do IAM (opcional), clique no nome da condição existente para a editar.

  4. No painel Editar condição, pode manter ou atualizar o título e a descrição existentes da condição.

  5. Pode editar a expressão de condição existente ou adicionar uma nova através do criador de condições ou do editor de condições. O criador de condições oferece uma interface interativa para selecionar o tipo de condição, o operador e outros detalhes aplicáveis sobre a expressão. O editor de condições oferece uma interface baseada em texto para introduzir manualmente uma expressão através da sintaxe CEL.

    Construtor de condições:

    1. Adicione uma nova expressão de condição ou modifique a expressão de condição existente.
    2. Clique em Guardar para aplicar a condição.
    3. Quando o painel Editar condição estiver fechado, clique novamente em Guardar no painel Editar autorizações para atualizar a política de permissão.

    Editor de condições:

    1. Clique no separador Editor de condições e adicione uma nova expressão de condição ou modifique a expressão de condição existente.
    2. Depois de introduzir a expressão, pode optar por validar a sintaxe CEL clicando em Executar Linter acima da caixa de texto na parte superior direita.
    3. Clique em Guardar para aplicar a condição.
    4. Quando o painel Editar condição estiver fechado, clique novamente em Guardar no painel Editar autorizações para atualizar a política de permissão.

gcloud

As políticas de permissão são definidas através do padrão read-modify-write.

Execute o comando gcloud projects get-iam-policy para obter a política de permissão atual do projeto. No exemplo seguinte, a versão JSON da política de permissão é transferida para um caminho no disco.

Comando:

gcloud projects get-iam-policy project-id --format json > file-path

O formato JSON da política de autorização é transferido:

{
  "bindings": [
    {
      "members": [
        "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
      ],
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Duration_3_months",
        "description": "Expires in 3 months on 2019-10-12",
        "expression":
          "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")"
      }
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

Neste exemplo, vamos atualizar os valores title, description e de data/hora na expressão para alterar a duração da condição de acesso agendada. Atualize a parte realçada da condição (substituindo os valores pelos seus):

{
  "bindings": [
    {
      "members": [
        "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
      ],
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Duration_5_months",
        "description": "Expires in 5 months on 2020-01-12",
        "expression":
          "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')"
      }
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

Em seguida, defina a nova política de permissão executando o comando gcloud projects set-iam-policy.

gcloud projects set-iam-policy project-id file-path

A política de permissão atualizada é aplicada e a associação de funções de fatima@example.com expira à nova hora.

REST

Use o padrão read-modify-write para modificar a associação de funções condicional.

Primeiro, leia a política de permissão para o projeto:

O método projects.getIamPolicy da API Resource Manager obtém a política de autorização de um projeto.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: O ID do seu Trusted Cloud projeto. Os IDs dos projetos são strings alfanuméricas, como my-project.

Método HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy

Corpo JSON do pedido:

{
  "options": {
    "requestedPolicyVersion": 3
  }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Duration_3_months",
        "description": "Expires in 3 months on 2019-10-12",
        "expression":
          "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")"
      },
      "members": [
        "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
      ]
    }
  ]
}

Em seguida, modifique a associação de funções condicional na política de autorização. Neste exemplo, vamos atualizar os valores de data/hora para alterar a duração da condição de acesso agendado. Atualize a parte realçada seguinte da expressão de condição (substituindo a indicação de tempo pela sua):

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Duration_5_months",
        "description": "Expires in 5 months on 2020-01-12",
        "expression":
          "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')"
      },
      "members": [
        "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
      ]
    }
  ]
}

Por último, escreva a política de permissão atualizada:

O método projects.setIamPolicy da API Resource Manager define a política de autorização no pedido como a nova política de autorização do projeto.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: O ID do seu Trusted Cloud projeto. Os IDs dos projetos são strings alfanuméricas, como my-project.

Método HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

Corpo JSON do pedido:

{
  "policy": {
    "etag": "BwWKmjvelug=",
    "version": 3,
    "bindings": [
      {
        "role": "roles/owner",
        "members": [
          "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
        ]
      },
      {
        "role": "roles/bigquery.dataViewer",
        "condition": {
          "title": "Duration_5_months",
          "description": "Expires in 5 months on 2020-01-12",
          "expression":
            "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')"
        },
        "members": [
          "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
        ],
      }
    ]
  }
}

Para enviar o seu pedido, expanda uma destas opções:

A resposta contém a política de permissão atualizada.


Remova uma condição de uma associação de funções

A remoção de uma condição de uma associação de funções não revoga a função. Em alternativa, permite que todos os principais nessa associação de funções usem as autorizações na função incondicionalmente.

Esta secção mostra como remover uma condição baseada no tempo numa política de autorização através daTrusted Cloud consola, da CLI Google Cloud e da API REST.

Para remover uma condição de uma associação de funções numa política de autorização:

Consola

  1. Na Trusted Cloud consola, aceda à página IAM.

    Aceda à página IAM

  2. Na lista de diretores, localize o diretor pretendido e clique no botão .

  3. No painel Editar autorizações, localize a associação de funções pretendida. Em seguida, em Condição do IAM (opcional), clique no nome de uma condição existente.

  4. No painel Editar condição, clique no botão para remover a condição. É-lhe pedido que confirme a eliminação da condição.

  5. Quando o painel Editar condição estiver fechado, clique novamente em Guardar no painel Editar autorizações para atualizar a política de autorização.

gcloud

As políticas de permissão são definidas através do padrão read-modify-write.

Execute o comando gcloud projects get-iam-policy para obter a política de permissão atual do projeto. No exemplo seguinte, a versão JSON da política de permissão é transferida para um caminho no disco.

Comando:

gcloud projects get-iam-policy project-id --format json > file-path

O formato JSON da política de autorização é transferido:

{
  "bindings": [
    {
      "members": [
        "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
      ],
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Duration_3_months",
        "description": "Expires in 3 months on 2019-10-12",
        "expression":
          "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")"
      }
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

Para remover a associação de funções condicional da política de autorização, remova o bloco condition, conforme mostrado abaixo:

{
  "bindings": [
    {
      "members": [
        "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
      ],
      "role": "roles/bigquery.dataViewer",
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

Tenha em atenção que o version continua definido como 3, apesar de as associações de funções incondicionais apenas exigirem uma política de autorização 1. Recomendamos que use sempre o número de versão mais elevado quando definir uma política de autorização, tanto para associações de funções condicionais como para associações de funções incondicionais. Consulte os requisitos de versão para mais informações. A CLI gcloud atualiza automaticamente o número da versão da política de permissão.

Em seguida, defina a política de permissão atualizada executando o comando gcloud projects set-iam-policy:

gcloud projects set-iam-policy project-id file-path

A política de autorização atualizada é aplicada, removendo a associação de funções condicional para fatima@example.com. A associação de funções vai deixar de expirar.

REST

Use o padrão read-modify-write para remover a associação de funções condicional.

Primeiro, leia a política de permissão para o projeto:

O método projects.getIamPolicy da API Resource Manager obtém a política de autorização de um projeto.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: O ID do seu Trusted Cloud projeto. Os IDs dos projetos são strings alfanuméricas, como my-project.

Método HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy

Corpo JSON do pedido:

{
  "options": {
    "requestedPolicyVersion": 3
  }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Duration_3_months",
        "description": "Expires in 3 months on 2019-10-12",
        "expression":
          "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")"
      },
      "members": [
        "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
      ]
    }
  ]
}

Em seguida, modifique a política de permissão removendo a associação de funções condicional:

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "members": [
        "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
      ]
    }
  ]
}

Tenha em atenção que o version continua definido como 3, apesar de as associações de funções incondicionais apenas exigirem uma política de autorização 1. Recomendamos que use sempre o número de versão mais elevado quando definir uma política de autorização, tanto para associações de funções condicionais como para associações de funções incondicionais. Consulte os requisitos de versão para mais informações.

Por último, escreva a política de permissão atualizada:

O método projects.setIamPolicy da API Resource Manager define a política de autorização no pedido como a nova política de autorização do projeto.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: O ID do seu Trusted Cloud projeto. Os IDs dos projetos são strings alfanuméricas, como my-project.

Método HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

Corpo JSON do pedido:

{
  "policy": {
    "etag": "BwWKmjvelug=",
    "version": 3,
    "bindings": [
      {
        "role": "roles/owner",
        "members": [
          "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
        ]
      },
      {
        "role": "roles/bigquery.dataViewer",
        "members": [
          "principalSet://iam.googleapis.com/locations/global/workforcePools/my-pool/group/my-group"
        ]
      }
    ]
  }
}

Para enviar o seu pedido, expanda uma destas opções:

A resposta contém a política de permissão atualizada.


O que se segue?