Esta página fornece consultas de amostra para mostrar como usar os
métodos AnalyzeIamPolicy
e
AnalyzeIamPolicyLongrunning
para análise política.
Antes de começar
AnalyzeIamPolicy
É necessário ativar a API Cloud Asset no seu projeto.
Se você estiver usando a API para executar essas consultas, precisará configurar o ambiente e
gcurl
.
Para configurar um alias do
gcurl
, conclua as seguintes etapasSe você estiver em uma instância do Compute Engine, execute o seguinte comando.
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" -X POST -H "X-HTTP-Method-Override: GET"'
Se você não estiver em uma instância do Compute Engine, execute o seguinte comando.
alias gcurl='curl -H "$(oauth2l header --json CREDENTIALS cloud-platform)" \ -H "Content-Type: application/json" -X POST -H "X-HTTP-Method-Override: GET"'
Em que CREDENTIALS é o caminho do arquivo de credenciais, como
~/credentials.json
.
AnalyzeIamPolicyLongrunning
É necessário ativar a API Cloud Asset no seu projeto.
Se você estiver usando a API para executar essas consultas, precisará configurar o ambiente e
gcurl
.
Para configurar um alias do
gcurl
, conclua as seguintes etapasSe você estiver em uma instância do Compute Engine, execute o seguinte comando.
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" -X POST'
Se você não estiver em uma instância do Compute Engine, execute o seguinte comando.
alias gcurl='curl -H "$(oauth2l header --json CREDENTIALS cloud-platform)" \ -H "Content-Type: application/json" -X POST'
Em que CREDENTIALS é o caminho do arquivo de credenciais, como
~/credentials.json
.
Como localizar identidades com papéis/permissões específicas em um recurso específico
Para encontrar identidades que receberam a permissão iam.serviceAccounts.actAs
ou
iam.serviceAccounts.get
em uma conta de serviço especificada, execute o
seguinte comando.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --full-resource-name="FULL_RESOURCE_NAME" \ --permissions="COMMA_SEPARATED_PERMISSIONS" \ --expand-groups \ --output-group-edges \ --show-response
Por exemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --full-resource-name="//iam.googleapis.com/projects/project1/serviceAccounts/sa1@project1.iam.gserviceaccount.com" \ --permissions="iam.serviceAccounts.actAs,iam.serviceAccounts.get" \ --expand-groups \ --output-group-edges \ --show-response
REST
Crie um arquivo
request.json
para o corpo da solicitação e defina o conteúdo dele para a solicitação de análise no formato JSON.{ "analysisQuery":{ "scope":"organizations/ORG_ID", "resourceSelector":{ "fullResourceName":"FULL_RESOURCE_NAME" }, "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs", "iam.serviceAccounts.get" ] }, "options":{ "expandGroups":EXPAND_GROUPS, "outputGroupEdges":OUTPUT_GROUP_EDGES, "outputResourceEdges":OUTPUT_RESOURCE_EDGES, "analyzeServiceAccountImpersonation":ANALYZE_SERVICE_ACCOUNT_IMPERSONATION } } }
Por exemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "resourceSelector":{ "fullResourceName":"//iam.googleapis.com/projects/project1/serviceAccounts/sa1@project1.iam.gserviceaccount.com" }, "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs", "iam.serviceAccounts.get" ] }, "options":{ "expandGroups":true, "outputGroupEdges":true, "outputResourceEdges":false, "analyzeServiceAccountImpersonation":false } } }
Depois de criar o arquivo
request.json
, execute a solicitação com o comando a seguir usando o aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Em que:
- ORG_ID é o ID da organização, como
1234567890
. - REST_ANALYZE_METHOD é o método de análise,
analyzeIamPolicy
ouanalyzeIamPolicyLongrunning
.
- ORG_ID é o ID da organização, como
Esse método retorna as identidades que aparecem na política e as identidades
que recebem permissões por meio da associação ao grupo. Para retornar apenas as
identidades que aparecem na política, desative as opções --expand-groups
e
--output-group-edges
.
É possível ativar a opção --output-resource-edges
se quiser saber como o
recurso especificado herda a política do recurso anexado à política. Por exemplo,
suponha que a política esteja definida em uma pasta f1. Você verá as bordas dos recursos f1-to-project1
e project1-to-sa1.
Ative a opção --analyze-service-account-impersonation
se quiser
encontrar identidades que possam acessar indiretamente o recurso especificado por meio
da personificação da conta de serviço.
Como encontrar identidades com papéis/permissões em um recurso específico
Para encontrar identidades que tenham papéis ou permissões em uma conta de serviço especificada, execute o seguinte comando.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --full-resource-name="FULL_RESOURCE_NAME" \ --expand-roles
Por exemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --full-resource-name="//iam.googleapis.com/projects/project1/serviceAccounts/sa1@project1.iam.gserviceaccount.com" \ --expand-roles
REST
Crie um arquivo
request.json
para o corpo da solicitação e defina o conteúdo dele para a solicitação de análise no formato JSON.{ "analysisQuery":{ "scope":"organizations/ORG_ID", "resourceSelector":{ "fullResourceName":"FULL_RESOURCE_NAME" }, "options":{ "expandRoles":EXPAND_ROLES, "expandGroups":EXPAND_GROUPS, "outputGroupEdges":OUTPUT_GROUP_EDGES, "outputResourceEdges":OUTPUT_RESOURCE_EDGES, "analyzeServiceAccountImpersonation":ANALYZE_SERVICE_ACCOUNT_IMPERSONATION } } }
Por exemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "resourceSelector":{ "fullResourceName":"//iam.googleapis.com/projects/project1/serviceAccounts/sa1@project1.iam.gserviceaccount.com" }, "options":{ "expandRoles":true, "expandGroups":false, "outputGroupEdges":false, "outputResourceEdges":false, "analyzeServiceAccountImpersonation":false } } }
Depois de criar o arquivo
request.json
, execute a solicitação com o comando a seguir usando o aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Em que:
- ORG_ID é o ID da organização, como
1234567890
. - REST_ANALYZE_METHOD é o método de análise,
analyzeIamPolicy
ouanalyzeIamPolicyLongrunning
.
- ORG_ID é o ID da organização, como
Esse método retorna os papéis que aparecem nas políticas e as permissões
incluídas no papel anexado à política. Para mostrar apenas os papéis que
aparecem nas políticas, desative a opção --expand-roles
.
É possível ativar as opções --expand-groups
e --output-group-edges
para
ver as identidades que recebem permissões por meio da associação a grupos no resultado.
É possível ativar a opção --output-resource-edges
se quiser saber como o
recurso especificado herda a política do recurso anexado à política. Por exemplo,
suponha que a política esteja definida em uma pasta f1. Você verá as bordas dos recursos f1-to-project1
e project1-to-sa1.
Ative a opção --analyze-service-account-impersonation
se quiser
encontrar identidades que possam acessar indiretamente o recurso especificado por meio
da personificação da conta de serviço.
Como encontrar identidades com papéis/permissões específicas em um projeto
Para encontrar identidades que tenham a permissão iam.serviceAccounts.actAs
ou
iam.serviceAccounts.get
em qualquer conta de serviço em um projeto, execute o comando a seguir.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --full-resource-name="FULL_RESOURCE_NAME" \ --permissions="COMMA_SEPARATED_PERMISSIONS" \ --expand-resources
Por exemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --full-resource-name="//cloudresourcemanager.googleapis.com/projects/project1" \ --permissions="iam.serviceAccounts.actAs" \ --expand-resources
REST
Crie um arquivo
request.json
para o corpo da solicitação e defina o conteúdo dele para a solicitação de análise no formato JSON.{ "analysisQuery":{ "scope":"organizations/ORG_ID", "resourceSelector":{ "fullResourceName":"FULL_RESOURCE_NAME" }, "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs" ] }, "options":{ "expandResources":EXPAND_RESOURCES } } }
Por exemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "resourceSelector":{ "fullResourceName":"//cloudresourcemanager.googleapis.com/projects/project1" }, "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs" ] }, "options":{ "expandResources":true } } }
Depois de criar o arquivo
request.json
, execute a solicitação com o comando a seguir usando o aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Em que:
- ORG_ID é o ID da organização, como
1234567890
. - REST_ANALYZE_METHOD é o método de análise,
analyzeIamPolicy
ouanalyzeIamPolicyLongrunning
.
- ORG_ID é o ID da organização, como
Como encontrar recursos com papéis/permissões específicas para uma identidade específica
Para encontrar recursos que receberam a permissão iam.serviceAccounts.actAs
ou
iam.serviceAccounts.get
para um usuário especificado, execute o seguinte
comando.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --identity="IDENTITY" \ --permissions="COMMA_SEPARATED_PERMISSIONS"
Por exemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --identity="user:user1@example.com" \ --permissions="iam.serviceAccounts.actAs,iam.serviceAccounts.get"
REST
Crie um arquivo
request.json
para o corpo da solicitação e defina o conteúdo dele para a solicitação de análise no formato JSON.{ "analysisQuery":{ "scope":"organizations/ORG_ID", "identitySelector":{ "identity":"IDENTITY" }, "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs", "iam.serviceAccounts.get" ] }, "options":{ "outputGroupEdges":OUTPUT_GROUP_EDGES, "expandResources":EXPAND_RESOURCES, "outputResourceEdges":OUTPUT_RESOURCE_EDGES, "analyzeServiceAccountImpersonation":ANALYZE_SERVICE_ACCOUNT_IMPERSONATION } } }
Por exemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "identitySelector":{ "identity":"user:user1@example.com" }, "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs", "iam.serviceAccounts.get" ] }, "options":{ "outputGroupEdges":false, "expandResources":false, "outputResourceEdges":false, "analyzeServiceAccountImpersonation":false } } }
Depois de criar o arquivo
request.json
, execute a solicitação com o comando a seguir usando o aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Em que:
- ORG_ID é o ID da organização, como
1234567890
. - REST_ANALYZE_METHOD é o método de análise,
analyzeIamPolicy
ouanalyzeIamPolicyLongrunning
.
- ORG_ID é o ID da organização, como
É possível ativar as opções --expand-resources
e --output-resource-edges
para ver os recursos herdados que receberam o acesso especificado à
identidade especificada.
Ative a opção --output-group-edges
se quiser saber como a
identidade especificada herda o acesso por meio da associação ao grupo. Por exemplo,
se a política tiver um grupo de membros g1 e user1 for o membro, você verá a
borda do grupo g1-user1.
Ative a opção --analyze-service-account-impersonation
se quiser
encontrar recursos que possam ser acessados indiretamente pela identidade especificada
por meio da personificação da conta de serviço.
Como encontrar recursos com qualquer papel ou permissão para uma identidade especificada
Para encontrar recursos que recebem qualquer papel/permissão para um usuário especificado, execute o comando a seguir.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --identity="IDENTITY" \ --expand-roles \ --expand-resources \ --output-resource-edges \ --show-response
Por exemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --identity="user:user1@example.com" \ --expand-roles \ --expand-resources \ --output-resource-edges \ --show-response
REST
Crie um arquivo
request.json
para o corpo da solicitação e defina o conteúdo dele para a solicitação de análise no formato JSON.{ "analysisQuery":{ "scope":"organizations/123456789", "identitySelector":{ "identity":"user:user1@example.com" }, "options":{ "expandRoles":EXPAND_ROLES, "outputGroupEdges":OUTPUT_GROUP_EDGES, "expandResources":EXPAND_RESOURCES, "outputResourceEdges":OUTPUT_RESOURCE_EDGES, "analyzeServiceAccountImpersonation":ANALYZE_SERVICE_ACCOUNT_IMPERSONATION } } }
Por exemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "identitySelector":{ "identity":"user:user1@example.com" }, "options":{ "expandRoles":true, "outputGroupEdges":false, "expandResources":true, "outputResourceEdges":true, "analyzeServiceAccountImpersonation":false } } }
Depois de criar o arquivo
request.json
, execute a solicitação com o comando a seguir usando o aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Em que:
- ORG_ID é o ID da organização, como
1234567890
. - REST_ANALYZE_METHOD é o método de análise,
analyzeIamPolicy
ouanalyzeIamPolicyLongrunning
.
- ORG_ID é o ID da organização, como
Esse método retorna os papéis que aparecem nas políticas e as permissões
incluídas no papel anexado à política. Para mostrar apenas os papéis que
aparecem nas políticas, desative a opção --expand-roles
.
Esse comando retorna os recursos que aparecem nas políticas e os recursos herdados
que recebem acesso à identidade especificada. Para mostrar apenas
os recursos que aparecem nas políticas, desative as opções --expand-resources
e
--output-resource-edges
.
Ative a opção --output-group-edges
se quiser saber como a
identidade especificada herda o acesso por meio da associação ao grupo. Por exemplo,
se a política tiver um grupo de membros g1 e user1 for o membro, você verá a
borda do grupo g1-user1.
Ative a opção --analyze-service-account-impersonation
se quiser
encontrar recursos que possam ser acessados indiretamente pela identidade especificada
por meio da personificação da conta de serviço.
Como encontrar papéis/permissões em um recurso especificado para uma identidade específica
Para encontrar papéis ou permissões que sejam concedidos a um usuário específico em uma conta de serviço específica, execute o seguinte comando.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --full-resource-name="FULL_RESOURCE_NAME" \ --identity="IDENTITY" \ --expand-roles
Por exemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --full-resource-name="//iam.googleapis.com/projects/project1/serviceAccounts/sa1@project1.iam.gserviceaccount.com" \ --identity="user:user1@example.com" \ --expand-roles
REST
Crie um arquivo
request.json
para o corpo da solicitação e defina o conteúdo dele para a solicitação de análise no formato JSON.{ "analysisQuery":{ "scope":"organizations/123456789", "resourceSelector":{ "fullResourceName":"FULL_RESOURCE_NAME" }, "identitySelector":{ "identity":"IDENTITY" }, "options":{ "expandRoles":EXPAND_ROLES, "outputGroupEdges":OUTPUT_GROUP_EDGES, "outputResourceEdges":OUTPUT_RESOURCE_EDGES } } }
Por exemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "resourceSelector":{ "fullResourceName":"//iam.googleapis.com/projects/project1/serviceAccounts/sa1@project1.iam.gserviceaccount.com" }, "identitySelector":{ "identity":"user:user1@example.com" }, "options":{ "expandRoles":true, "outputGroupEdges":false, "outputResourceEdges":false } } }
Depois de criar o arquivo
request.json
, execute a solicitação com o comando a seguir usando o aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Em que:
- ORG_ID é o ID da organização, como
1234567890
. - REST_ANALYZE_METHOD é o método de análise,
analyzeIamPolicy
ouanalyzeIamPolicyLongrunning
.
- ORG_ID é o ID da organização, como
Esse comando retorna os papéis que aparecem nas políticas e as permissões
incluídas no papel anexado à política. Para mostrar apenas os papéis que
aparecem nas políticas, desative a opção --expand-roles
.
Ative a opção --output-group-edges
se quiser saber como a
identidade especificada herda o acesso por meio da associação ao grupo. Por exemplo,
se a política tiver um grupo de membros g1 e user1 for o membro, você verá a
borda do grupo g1-user1.
É possível ativar a opção --output-resource-edges
se quiser saber como o
recurso especificado herda a política do recurso anexado à política. Por exemplo,
suponha que a política esteja definida em uma pasta f1. Você verá as bordas dos recursos f1-to-project1
e project1-to-sa1.
Como encontrar identidades e recursos com papéis/permissões específicas
Para encontrar identidades e recursos que receberam a
permissão iam.serviceAccounts.actAs
, execute o seguinte comando.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --permissions="COMMA_SEPARATED_PERMISSIONS"
Por exemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --permissions="iam.serviceAccounts.actAs"
REST
Crie um arquivo
request.json
para o corpo da solicitação e defina o conteúdo dele para a solicitação de análise no formato JSON.{ "analysisQuery":{ "scope":"organizations/123456789", "resourceSelector":{ "fullResourceName":"FULL_RESOURCE_NAME" }, "identitySelector":{ "identity":"IDENTITY" }, "options":{ "expandGroups":EXPAND_GROUPS, "outputGroupEdges":OUTPUT_GROUP_EDGES, "expandResources":EXPAND_RESOURCES, "outputResourceEdges":OUTPUT_RESOURCE_EDGES } } }
Por exemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs" ] }, "options":{ "expandGroups":false, "outputGroupEdges":false, "expandResources":false, "outputResourceEdges":false } } }
Depois de criar o arquivo
request.json
, execute a solicitação com o comando a seguir usando o aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Em que:
- ORG_ID é o ID da organização, como
1234567890
. - REST_ANALYZE_METHOD é o método de análise,
analyzeIamPolicy
ouanalyzeIamPolicyLongrunning
.
- ORG_ID é o ID da organização, como
É possível ativar as opções --expand-groups
e --output-group-edges
para
ver as identidades que recebem permissões por meio da associação a grupos no resultado.
É possível ativar as opções --expand-resources
e --output-resource-edges
para ver os recursos herdados que recebem acesso à identidade
especificada.