Neste tópico, mostramos como visualizar as políticas efetivas de Identity and Access Management (IAM) em um determinado recurso.
No IAM, a política em vigor descreve como todas as políticas pai e ancestrais na hierarquia de recursos são herdadas para um recurso.
Escopo e permissões
Ao solicitar políticas de IAM efetivas, você precisa especificar um escopo. Pode ser uma organização, uma pasta ou um projeto. Todas as políticas do IAM definidas nesse escopo ou nesse escopo são retornadas. O escopo da solicitação não precisa ser o mesmo que o projeto ativado para a API Cloud Asset. Além disso, o projeto ativado e o escopo da solicitação exigem permissões diferentes.
Tipos de políticas compatíveis
As políticas IAM efetivas são compatíveis apenas com as políticas de permissão do IAM. Ele não é compatível com as seguintes formas de controle de acesso:
Antes de começar
Antes de começar, conclua as etapas a seguir.
Ative a API Cloud Asset Inventory para o projeto.
Ativar a API Cloud Asset Inventory
Esse projeto não precisa ser igual ao escopo das suas solicitações. Saiba mais sobre como definir um projeto ao ativar um serviço.
Instale o SDK do Google Cloud.
Opcional: para chamar a API Cloud Asset Inventory diretamente, confirme se você tem acesso ao comando
curl
.Configure as permissões.
Configure permissões para a API Cloud Asset.
Ative as permissões a seguir para o escopo da sua solicitação.
cloudasset.assets.analyzeIamPolicy
cloudasset.assets.searchAllResources
cloudasset.assets.searchAllIamPolicies
Essas permissões estão incluídas nos seguintes papéis predefinidos:
Proprietário de recursos do Cloud (
roles/cloudasset.owner
)Leitor de recursos do Cloud (
roles/cloudasset.viewer
)
Para mais informações sobre permissões e papéis da API Cloud Asset, consulte Controle de acesso.
Tenha políticas do IAM efetivas
gcloud
Para ver as políticas do IAM efetivas em um recurso, chame
BatchGetEffectiveIamPolicies
usando o comando
gcloud asset get-effective-iam-policy
. É necessário executar a Google Cloud CLI versão 399.0.0
ou mais recente.
gcloud asset get-effective-iam-policy \
--scope=SCOPE \
--names=ASSET_NAME_1,ASSET_NAME_2,...
Forneça os valores a seguir:
SCOPE
: um escopo pode ser um projeto, uma pasta ou uma organização.Os valores permitidos são:
projects/PROJECT_ID
projects/PROJECT_NUMBER
Como encontrar um número de projeto do Google Cloud
Console
Para encontrar um número de projeto do Google Cloud, siga estas etapas:
-
Acesse a página Painel no console do Google Cloud.
- Clique na caixa do seletor na barra de menus.
- Escolha a organização na caixa Selecionar de e pesquise o nome do projeto.
- Clique no nome do projeto para alternar para ele. O número do projeto é mostrado no card Informações do projeto.
CLI da gcloud
É possível recuperar um número de projeto do Google Cloud com o seguinte comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
folders/FOLDER_ID
Como encontrar um ID de pasta do Google Cloud
Console
Para encontrar um ID da pasta do Google Cloud, siga estas etapas:
-
Acesse o console do Google Cloud.
- Clique na caixa do seletor na barra de menus.
- Clique na caixa Selecionar de e escolha sua organização.
- Pesquise o nome da pasta. O ID é exibido ao lado do nome da pasta.
CLI da gcloud
Para recuperar um ID de pasta do Google Cloud localizado no nível da organização, use o seguinte comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Em que TOP_LEVEL_FOLDER_NAME pode ser uma correspondência de string completa ou parcial. Remova a opção
--format
para ver mais informações sobre as pastas encontradas.Para obter o ID de uma pasta dentro de outra pasta, liste as subpastas:
gcloud resource-manager folders list --folder=FOLDER_ID
-
organizations/ORGANIZATION_ID
Como encontrar um ID da organização do Google Cloud
Console
Para encontrar um ID da organização do Google Cloud, siga estas etapas:
-
Acesse o console do Google Cloud.
- Clique na caixa do seletor na barra de menus.
- Clique na caixa Selecionar de e escolha sua organização.
- Selecione a guia Todos. O ID é exibido ao lado do nome da organização.
CLI da gcloud
É possível recuperar um ID da organização do Google Cloud com o seguinte comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
ASSET_NAME
: uma lista separada por vírgulas de nomes completos de recursos para recuperar as políticas do IAM efetivas.Você pode recuperar políticas para no máximo 20 recursos em um lote.
Os exemplos de código a seguir são exemplos de comandos da CLI gcloud
:
Para o ID da organização
123456
:gcloud asset get-effective-iam-policy \ --scope=organizations/123456 \ --names=//cloudresourcemanager.googleapis.com/organizations/123456
Para um ID de pasta de
1234567
:gcloud asset get-effective-iam-policy \ --scope=folders/1234567 \ --names=//cloudresourcemanager.googleapis.com/folders/1234567
Para dois recursos de instância do Cloud SQL em um projeto chamado
my-project
:gcloud asset get-effective-iam-policy \ --scope=projects/my-project \ --names=//cloudsql.googleapis.com/projects/my-project/instances/instance1,//cloudsql.googleapis.com/projects/my-project/instances/instance2
REST
Para receber as políticas de IAM efetivas em um recurso usando a API Cloud Asset Inventory, use o seguinte comando curl
:
curl -X POST \
-H "X-HTTP-Method-Override: GET" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"names": [
"ASSET_NAME_1",
"ASSET_NAME_2",
"..."
]
}' \
https://cloudasset.googleapis.com/v1/SCOPE/effectiveIamPolicies:batchGet
Forneça os valores a seguir:
ASSET_NAME
: uma lista separada por vírgulas de nomes completos de recursos para recuperar as políticas do IAM efetivas.Você pode recuperar políticas para no máximo 20 recursos em um lote.
SCOPE
: um escopo pode ser um projeto, uma pasta ou uma organização.Os valores permitidos são:
projects/PROJECT_ID
projects/PROJECT_NUMBER
Como encontrar um número de projeto do Google Cloud
Console
Para encontrar um número de projeto do Google Cloud, siga estas etapas:
-
Acesse a página Painel no console do Google Cloud.
- Clique na caixa do seletor na barra de menus.
- Escolha a organização na caixa Selecionar de e pesquise o nome do projeto.
- Clique no nome do projeto para alternar para ele. O número do projeto é mostrado no card Informações do projeto.
CLI da gcloud
É possível recuperar um número de projeto do Google Cloud com o seguinte comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
folders/FOLDER_ID
Como encontrar um ID de pasta do Google Cloud
Console
Para encontrar um ID da pasta do Google Cloud, siga estas etapas:
-
Acesse o console do Google Cloud.
- Clique na caixa do seletor na barra de menus.
- Clique na caixa Selecionar de e escolha sua organização.
- Pesquise o nome da pasta. O ID é exibido ao lado do nome da pasta.
CLI da gcloud
Para recuperar um ID de pasta do Google Cloud localizado no nível da organização, use o seguinte comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Em que TOP_LEVEL_FOLDER_NAME pode ser uma correspondência de string completa ou parcial. Remova a opção
--format
para ver mais informações sobre as pastas encontradas.Para obter o ID de uma pasta dentro de outra pasta, liste as subpastas:
gcloud resource-manager folders list --folder=FOLDER_ID
-
organizations/ORGANIZATION_ID
Como encontrar um ID da organização do Google Cloud
Console
Para encontrar um ID da organização do Google Cloud, siga estas etapas:
-
Acesse o console do Google Cloud.
- Clique na caixa do seletor na barra de menus.
- Clique na caixa Selecionar de e escolha sua organização.
- Selecione a guia Todos. O ID é exibido ao lado do nome da organização.
CLI da gcloud
É possível recuperar um ID da organização do Google Cloud com o seguinte comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-