Amostras de consulta

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

  • Se você estiver usando a API para executar essas consultas, precisará configurar o ambiente e gcurl.
  1. Configure o ambiente.

  2. Para configurar um alias do gcurl, conclua as seguintes etapas

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

  1. Configure o ambiente.

  2. Para configurar um alias do gcurl, conclua as seguintes etapas

    Se 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

  1. 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
        }
      }
    }
    
  2. Depois de criar o arquivo request.json, execute a solicitação com o comando a seguir usando o alias gcurl.

    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 ou analyzeIamPolicyLongrunning.

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

  1. 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
        }
      }
    }
    
  2. Depois de criar o arquivo request.json, execute a solicitação com o comando a seguir usando o alias gcurl.

    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 ou analyzeIamPolicyLongrunning.

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

  1. 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
        }
      }
    }
    
  2. Depois de criar o arquivo request.json, execute a solicitação com o comando a seguir usando o alias gcurl.

    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 ou analyzeIamPolicyLongrunning.

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

  1. 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
        }
      }
    }
    
  2. Depois de criar o arquivo request.json, execute a solicitação com o comando a seguir usando o alias gcurl.

    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 ou analyzeIamPolicyLongrunning.

É 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

  1. 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
        }
      }
    }
    
  2. Depois de criar o arquivo request.json, execute a solicitação com o comando a seguir usando o alias gcurl.

    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 ou analyzeIamPolicyLongrunning.

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

  1. 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
        }
      }
    }
    
  2. Depois de criar o arquivo request.json, execute a solicitação com o comando a seguir usando o alias gcurl.

    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 ou analyzeIamPolicyLongrunning.

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

  1. 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
        }
      }
    }
    
  2. Depois de criar o arquivo request.json, execute a solicitação com o comando a seguir usando o alias gcurl.

    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 ou analyzeIamPolicyLongrunning.

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