Encontrar contas de serviço com permissões de movimento lateral

Nesta página, mostramos como gerenciar insights de movimento lateral, que identificam papéis que permitem que uma conta de serviço em um projeto personifique uma conta de serviço em outro. Para mais informações sobre insights de movimento lateral, consulte Como os insights de movimentos laterais são gerados.

Às vezes, os insights de movimento lateral estão vinculados às recomendações de papéis. As recomendações de papel sugerem ações que podem ser tomadas para corrigir os problemas identificados pelos insights de movimento lateral.

Antes de começar

Funções exigidas

Para receber as permissões necessárias para gerenciar insights de movimentos laterais, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto para o qual você quer gerenciar insights:

  • Para visualizar insights de movimento lateral: leitor do recomendador do IAM (roles/recommender.iamViewer)
  • Para modificar insights de movimento lateral: administrador do recomendador do IAM (roles/recommender.iamAdmin)

Para mais informações sobre como conceder papéis, consulte Gerenciar o acesso.

Esses papéis predefinidos contêm as permissões necessárias para gerenciar insights de movimento lateral. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

  • Para ver insights do movimento lateral:
    • recommender.iamPolicyLateralMovementInsights.get
    • recommender.iamPolicyLateralMovementInsights.list
  • Para modificar insights de movimento lateral: recommender.iamPolicyLateralMovementInsights.update

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

Listar insights de movimento lateral

Para listar todos os insights de movimento lateral do seu projeto, use um dos seguintes métodos:

Console

  1. No Console do Cloud, acesse a página IAM.

    Acessar o IAM

  2. Selecione um projeto.

A coluna Insights de segurança mostra todos os insights relacionados à segurança do projeto, incluindo insights de movimentação lateral. Os insights de movimento lateral têm o formato N service account impersonations, em que N é o número de contas de serviço que a conta de serviço na vinculação de papel pode representar.

gcloud

Use o comando gcloud recommender insights list para ver todos os insights de movimento lateral do seu projeto.

Antes de executar o comando, substitua os seguintes valores:

  • PROJECT_ID: o ID do projeto para o qual você quer listar insights. Essa lista também inclui insights de movimentação lateral para vinculações de papéis no nível da conta de serviço no projeto.
gcloud recommender insights list --insight-type=google.iam.policy.LateralMovementInsight \
    --project=PROJECT_ID \
    --location=global

A saída lista todos os insights de movimento lateral do seu projeto. Exemplo:

INSIGHT_ID                            LOCATION  INSIGHT_TYPE                              CATEGORY  INSIGHT_STATE  LAST_REFRESH_TIME
0bd428af-d16c-4ac0-83eb-826dbce8c9bb  global    google.iam.policy.LateralMovementInsight  SECURITY  ACTIVE         2021-03-13T08:00:00Z
13088eec-9573-415f-81a7-46e1a260e860  global    google.iam.policy.LateralMovementInsight  SECURITY  ACTIVE         2021-03-13T08:00:00Z
1343077a-c1fe-409f-a7d5-3d01349e7651  global    google.iam.policy.LateralMovementInsight  SECURITY  ACTIVE         2021-03-13T08:00:00Z
31cc14c0-8c9d-4713-a6e5-de6976b0d778  global    google.iam.policy.LateralMovementInsight  SECURITY  ACTIVE         2021-03-13T08:00:00Z
4f0fd42b-5637-47af-9200-e0e55adbf321  global    google.iam.policy.LateralMovementInsight  SECURITY  ACTIVE         2021-03-13T08:00:00Z

REST

O método insights.list da API Recommender lista todos os insights de movimentação lateral do seu projeto.

Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto para o qual você quer listar insights.

Método HTTP e URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.LateralMovementInsight/insights

Para enviar a solicitação, expanda uma destas opções:

A resposta lista todos os insights de movimento lateral no projeto. Exemplo:

{
  "insights": [
    {
      "name": "projects/123456789012/locations/global/insightTypes/google.iam.policy.LateralMovementInsight/insights/13088eec-9573-415f-81a7-46e1a260e860",
      "description": "Service account service-account@another-project.iam.gserviceaccount.com from another project can impersonate 2 service account(s) under this project.",
      "content": {
        "impersonator": {
          "serviceAccount": "service-account@another-project.iam.gserviceaccount.com",
          "serviceAccountOwner": "//cloudresourcemanager.googleapis.com/projects/987654321098",
          "isGoogleManaged": false
        },
        "targetServiceAccounts": [
          "target-service-account-1@this-project.iam.gserviceaccount.com",
          "target-service-account-2@this-project.iam.gserviceaccount.com"
        ],
        "impersonationPolicy": {
          "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
          "role": "roles/editor",
          "member": "serviceAccount:service-account@another-project.iam.gserviceaccount.com",
          "condition": {
            "expression": "",
            "title": "",
            "description": "",
            "location": ""
          }
        },
        "impersonationPermissionUsage": [
          {
            "permission": "iam.serviceAccounts.actAs"
            "used": false
          }
        ],
        "hasPermissionUsageData": true
      },
      "lastRefreshTime": "2021-03-13T08:00:00Z",
      "observationPeriod": "7776000s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "associatedRecommendations": [
        {
          "recommendation": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/03f3dc20-f9e7-4502-95ab-bf7d3164846f"
        }
      ],
      "targetResources": [
        "//cloudresourcemanager.googleapis.com/projects/123456789012"
      ],
      "insightSubtype": "CROSS_PROJECT_IMPERSONATION",
      "etag": "\"f48fa6a1b15c7741\""
    }
  ]
}

Para saber mais sobre os componentes de um insight, consulte Analisar os insights de movimento lateral nesta página.

Receber um único insight de movimento lateral

Para mais informações sobre um único insight, incluindo a descrição, o status e as recomendações associadas, use um dos seguintes métodos:

Console

  1. No Console do Cloud, acesse a página IAM.

    Acessar o IAM

  2. Selecione um projeto.
  3. Na coluna Insights de segurança, clique em um insight de movimento lateral. Os insights de movimento lateral têm o formato N service account impersonations, em que N é o número de contas de serviço que a conta de serviço na vinculação de papel pode representar.

O Console do Cloud abre um painel que mostra os detalhes do insight.

gcloud

Use o comando gcloud recommender insights describe com o ID do insight para ver as informações sobre um único insight.

  • INSIGHT_ID: o ID do insight que você quer ver. Para encontrar o ID, liste os insights do projeto.
  • PROJECT_ID: o ID do projeto para o qual você quer gerenciar insights.
gcloud recommender insights describe INSIGHT_ID \
    --insight-type=google.iam.policy.LateralMovementInsight \
    --project=PROJECT_ID \
    --location=global

A saída mostra os insights detalhados. Por exemplo, o insight a seguir indica que a política do IAM no projeto 123456789012 permite que service-account@another-project.iam.gserviceaccount.com personifique target-service-account-1@this-project.iam.gserviceaccount.com e target-service-account-2@this-project.iam.gserviceaccount.com.

associatedRecommendations:
- recommendation: projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/03f3dc20-f9e7-4502-95ab-bf7d3164846f
category: SECURITY
content:
  hasPermissionUsageData: true
  impersonationPermissionUsage:
  - permission: iam.serviceAccounts.actAs
    used: false
  impersonationPolicy:
    condition:
      description: ''
      expression: ''
      location: ''
      title: ''
    member: serviceAccount:service-account@another-project.iam.gserviceaccount.com
    resource: //cloudresourcemanager.googleapis.com/projects/123456789012
    role: roles/editor
  impersonator:
    isGoogleManaged: false
    serviceAccount: service-account@another-project.iam.gserviceaccount.com
    serviceAccountOwner: //cloudresourcemanager.googleapis.com/projects/987654321098
  targetServiceAccounts:
  - target-service-account-1@this-project.iam.gserviceaccount.com
  - target-service-account-2@this-project.iam.gserviceaccount.com
description: Service account service-account@another-project.iam.gserviceaccount.com from another project can impersonate 2 service account(s) under this project.
etag: '"f48fa6a1b15c7741"'
insightSubtype: CROSS_PROJECT_IMPERSONATION
lastRefreshTime: '2021-03-13T08:00:00Z'
name: projects/123456789012/locations/global/insightTypes/google.iam.policy.LateralMovementInsight/insights/13088eec-9573-415f-81a7-46e1a260e860
observationPeriod: 7776000s
stateInfo:
  state: ACTIVE
targetResources:
- //cloudresourcemanager.googleapis.com/projects/123456789012

Para saber mais sobre os componentes de um insight, consulte Analisar os insights de movimento lateral nesta página.

REST

O método insights.get da API Recommender recebe um insight.

Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto para o qual você quer gerenciar insights.
  • INSIGHT_ID: o ID do insight que você quer ver. Se não souber o ID, é possível encontrá-lo listando os insights no projeto. O ID de um insight é tudo o que aparece depois de insights/ no campo name do insight.

Método HTTP e URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.LateralMovementInsight/insights/INSIGHT_ID

Para enviar a solicitação, expanda uma destas opções:

A resposta contém o insight. Por exemplo, o insight a seguir indica que a política do IAM no projeto 123456789012 permite que service-account@another-project.iam.gserviceaccount.com personifique target-service-account-1@this-project.iam.gserviceaccount.com e target-service-account-2@this-project.iam.gserviceaccount.com.

{
  "name": "projects/123456789012/locations/global/insightTypes/google.iam.policy.LateralMovementInsight/insights/13088eec-9573-415f-81a7-46e1a260e860",
  "description": "Service account service-account@another-project.iam.gserviceaccount.com from another project can impersonate 2 service account(s) under this project.",
  "content": {
    "impersonator": {
      "serviceAccount": "service-account@another-project.iam.gserviceaccount.com",
      "serviceAccountOwner": "//cloudresourcemanager.googleapis.com/projects/987654321098",
      "isGoogleManaged": false
    },
    "targetServiceAccounts": [
      "target-service-account-1@this-project.iam.gserviceaccount.com",
      "target-service-account-2@this-project.iam.gserviceaccount.com"
    ],
    "impersonationPolicy": {
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
      "role": "roles/editor",
      "member": "serviceAccount:service-account@another-project.iam.gserviceaccount.com",
      "condition": {
        "expression": "",
        "title": "",
        "description": "",
        "location": ""
      }
    },
    "impersonationPermissionUsage": [
      {
        "permission": "iam.serviceAccounts.actAs"
        "used": false
      }
    ],
    "hasPermissionUsageData": true
  },
  "lastRefreshTime": "2021-03-13T08:00:00Z",
  "observationPeriod": "7776000s",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/03f3dc20-f9e7-4502-95ab-bf7d3164846f"
    }
  ],
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "insightSubtype": "CROSS_PROJECT_IMPERSONATION",
  "etag": "\"f48fa6a1b15c7741\""
}

Para saber mais sobre os componentes de um insight, consulte Analisar os insights de movimento lateral nesta página.

Analisar insights de movimento lateral

Depois de receber um único insight, é possível analisar o conteúdo para entender o padrão de uso de recursos destacado

Console

Quando você clica em um insight de movimento lateral no Console do Cloud, o Console do Cloud abre um painel mostrando os detalhes do insight. A aparência desses detalhes depende de o insight estar associado a uma recomendação.

Se o insight estiver associado a uma recomendação, o painel mostrará os detalhes da recomendação.

Se o insight não estiver associado a uma recomendação, o painel mostrará o seguinte:

  • Projeto de origem da conta de serviço: o projeto em que a conta de serviço com permissões de representação foi criada.

  • Contas de serviço que podem ser representadas neste projeto. Uma lista de todas as contas de serviço no projeto atual que a conta de serviço com permissões de representação pode representar.

  • Permissões que permitem a representação no projeto: uma lista das permissões de representação que a conta de serviço tem.

  • Permissões atuais: uma lista de todas as permissões da conta de serviço.

gcloud

O conteúdo do insight é determinado pelos subtipos dele. Os insights de movimento lateral (google.iam.policy.LateralMovementInsight) são compatíveis com insights com o subtipo CROSS_PROJECT_IMPERSONATION.

Os insights CROSS_PROJECT_IMPERSONATION têm os seguintes componentes, não necessariamente nesta ordem:

  • associatedRecommendations: os identificadores de qualquer recomendação associada ao insight. Se não houver recomendações associadas ao insight, esse campo estará vazio.
  • category: a categoria dos insights do IAM é sempre SECURITY.
  • content: informa os detalhes da capacidade da conta de serviço de representar contas de serviço em outros projetos. Este campo contém os seguintes componentes:

    • hasPermissionUsageData: um valor booleano que indica se há dados de uso de permissão para essa vinculação de papel. Os dados de uso de permissão indicam se as permissões na vinculação de papel foram usadas. Esses dados não estão disponíveis para vinculações de papéis condicionais.
    • impersonationPermissionUsage: uma lista de permissões de representação e informações de uso. Se hasPermissionUsageData for falso, este campo estará vazio.
    • impersonationPolicy: informações sobre a vinculação de papel que concede permissões de representação da conta de serviço.
    • impersonator: a conta de serviço que tem permissão para personificar contas de serviço no projeto
    • targetServiceAccounts: uma lista das contas de serviço que a conta de serviço no campo impersonator tem permissão para personificar. Se o falsificador puder personificar mais de 1.500 contas de serviço, a lista estará vazia. Para saber quantas contas de serviço o representante pode representar, consulte o campo description.
  • description: um resumo legível do insight.
  • etag: um identificador exclusivo do estado atual de um insight. Sempre que o insight for alterado, um novo valor de etag será atribuído.

    Para alterar o estado de um insight, informe a etag do insight atual. O uso de etag ajuda a garantir que qualquer operação seja executada somente se o insight não tiver sido alterado desde a última vez que você o recuperou.

  • insightSubtype: o subtipo de insight.
  • lastRefreshTime: a data em que o insight foi atualizado pela última vez, o que indica a atualização dos dados usados para gerá-lo.
  • name: o nome do insight no seguinte formato:

    projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.LateralMovementInsight/insights/INSIGHT_ID

    Os marcadores têm os seguintes valores:

    • PROJECT_ID: o ID do projeto em que o insight foi gerado.
    • INSIGHT_ID: um ID exclusivo para o insight.
  • observationPeriod: o período antes do insight. Os dados de origem usados para gerar o insight terminam em lastRefreshTime e começam em lastRefreshTime menos observationPeriod.
  • severity: a gravidade do insight. Todos os insights de movimento lateral têm uma gravidade de LOW.
  • stateInfo: os insights passam por várias transições de estado após serem propostos:

    • ACTIVE: o insight foi gerado, mas nenhuma ação foi realizada, ou uma ação foi realizada sem atualizar o estado dele. Os insights ativos são atualizados quando os dados subjacentes são alterados.
    • ACCEPTED: ocorreu uma ação com base no insight. Os insights são aceitos quando uma recomendação associada é marcada como CLAIMED, SUCCEEDED ou FAILED, ou quando o insight é aceito diretamente. Quando o estado do insight é ACCEPTED, o conteúdo dele não pode ser alterado. Os insights aceitos são mantidos por 90 dias após a aceitação.
  • targetResources: o nome completo do recurso do projeto ou da conta de serviço referente ao insight. Por exemplo, //cloudresourcemanager.googleapis.com/projects/1234567890.

REST

O conteúdo do insight é determinado pelos subtipos dele. Os insights de movimento lateral (google.iam.policy.LateralMovementInsight) são compatíveis com insights com o subtipo CROSS_PROJECT_IMPERSONATION.

Os insights CROSS_PROJECT_IMPERSONATION têm os seguintes componentes, não necessariamente nesta ordem:

  • associatedRecommendations: os identificadores de qualquer recomendação associada ao insight. Se não houver recomendações associadas ao insight, esse campo estará vazio.
  • category: a categoria dos insights do IAM é sempre SECURITY.
  • content: informa os detalhes da capacidade da conta de serviço de representar contas de serviço em outros projetos. Este campo contém os seguintes componentes:

    • hasPermissionUsageData: um valor booleano que indica se há dados de uso de permissão para essa vinculação de papel. Os dados de uso de permissão indicam se as permissões na vinculação de papel foram usadas. Esses dados não estão disponíveis para vinculações de papéis condicionais.
    • impersonationPermissionUsage: uma lista de permissões de representação e informações de uso. Se hasPermissionUsageData for falso, este campo estará vazio.
    • impersonationPolicy: informações sobre a vinculação de papel que concede permissões de representação da conta de serviço.
    • impersonator: a conta de serviço que tem permissão para personificar contas de serviço no projeto
    • targetServiceAccounts: uma lista das contas de serviço que a conta de serviço no campo impersonator tem permissão para personificar. Se o falsificador puder personificar mais de 1.500 contas de serviço, a lista estará vazia. Para saber quantas contas de serviço o representante pode representar, consulte o campo description.
  • description: um resumo legível do insight.
  • etag: um identificador exclusivo do estado atual de um insight. Sempre que o insight for alterado, um novo valor de etag será atribuído.

    Para alterar o estado de um insight, informe a etag do insight atual. O uso de etag ajuda a garantir que qualquer operação seja executada somente se o insight não tiver sido alterado desde a última vez que você o recuperou.

  • insightSubtype: o subtipo de insight.
  • lastRefreshTime: a data em que o insight foi atualizado pela última vez, o que indica a atualização dos dados usados para gerá-lo.
  • name: o nome do insight no seguinte formato:

    projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.LateralMovementInsight/insights/INSIGHT_ID

    Os marcadores têm os seguintes valores:

    • PROJECT_ID: o ID do projeto em que o insight foi gerado.
    • INSIGHT_ID: um ID exclusivo para o insight.
  • observationPeriod: o período antes do insight. Os dados de origem usados para gerar o insight terminam em lastRefreshTime e começam em lastRefreshTime menos observationPeriod.
  • severity: a gravidade do insight. Todos os insights de movimento lateral têm uma gravidade de LOW.
  • stateInfo: os insights passam por várias transições de estado após serem propostos:

    • ACTIVE: o insight foi gerado, mas nenhuma ação foi realizada, ou uma ação foi realizada sem atualizar o estado dele. Os insights ativos são atualizados quando os dados subjacentes são alterados.
    • ACCEPTED: ocorreu uma ação com base no insight. Os insights são aceitos quando uma recomendação associada é marcada como CLAIMED, SUCCEEDED ou FAILED, ou quando o insight é aceito diretamente. Quando o estado do insight é ACCEPTED, o conteúdo dele não pode ser alterado. Os insights aceitos são mantidos por 90 dias após a aceitação.
  • targetResources: o nome completo do recurso do projeto ou da conta de serviço referente ao insight. Por exemplo, //cloudresourcemanager.googleapis.com/projects/1234567890.

Marcar um insight de movimento lateral como ACCEPTED

Se você executar uma ação com base em um insight ativo, será possível marcá-lo como ACCEPTED. O estado ACCEPTED informa à API Recommender que você tomou medidas com base nesse insight, o que ajuda a refinar as recomendações.

Os insights aceitos são mantidos por 90 dias depois de serem marcados como ACCEPTED.

Console

Se um insight estiver associado a uma recomendação, aplicar a recomendação mudará o estado do insight para ACCEPTED.

Para marcar um insight como ACCEPTED sem aplicar uma recomendação, use a CLI gcloud ou a API REST.

gcloud

Use o comando gcloud recommender insights mark-accepted com seu ID do insight para marcar um insight como ACCEPTED

  • INSIGHT_ID: o ID do insight que você quer ver. Para encontrar o ID, liste os insights do projeto.
  • PROJECT_ID: o ID do projeto para o qual você quer gerenciar insights.
  • ETAG: um identificador de uma versão do insight. Para receber o etag, faça o seguinte:

    1. Receba o insight usando o comando gcloud recommender insights describe.
    2. Encontre e copie o valor da etag na saída, incluindo as aspas delimitadoras. Por exemplo, "d3cdec23cc712bd0".
gcloud recommender insights mark-accepted INSIGHT_ID \
    --insight-type=google.iam.policy.LateralMovementInsight \
    --project=PROJECT_ID \
    --location=global \
    --etag=ETAG

A saída mostra o insight, agora com o estado ACCEPTED:

associatedRecommendations:
- recommendation: projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/03f3dc20-f9e7-4502-95ab-bf7d3164846f
category: SECURITY
content:
  hasPermissionUsageData: true
  impersonationPermissionUsage:
  - permission: iam.serviceAccounts.actAs
    used: false
  impersonationPolicy:
    condition:
      description: ''
      expression: ''
      location: ''
      title: ''
    member: serviceAccount:service-account@another-project.iam.gserviceaccount.com
    resource: //cloudresourcemanager.googleapis.com/projects/123456789012
    role: roles/editor
  impersonator:
    isGoogleManaged: false
    serviceAccount: service-account@another-project.iam.gserviceaccount.com
    serviceAccountOwner: //cloudresourcemanager.googleapis.com/projects/987654321098
  targetServiceAccounts:
  - target-service-account-1@this-project.iam.gserviceaccount.com
  - target-service-account-2@this-project.iam.gserviceaccount.com
description: Service account service-account@another-project.iam.gserviceaccount.com from another project can impersonate 2 service account(s) under this project.
etag: '"f48fa6a1b15c7741"'
insightSubtype: CROSS_PROJECT_IMPERSONATION
lastRefreshTime: '2021-03-13T08:00:00Z'
name: projects/123456789012/locations/global/insightTypes/google.iam.policy.LateralMovementInsight/insights/13088eec-9573-415f-81a7-46e1a260e860
observationPeriod: 7776000s
stateInfo:
  state: ACCEPTED
targetResources:
- //cloudresourcemanager.googleapis.com/projects/123456789012

Para saber mais sobre as informações de estado de um insight, consulte Analisar insights de movimento lateral nesta página.

REST

O método insights.markAccepted da API Recommender marca um insight como ACCEPTED.

Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto para o qual você quer gerenciar insights.
  • INSIGHT_ID: o ID do insight que você quer ver. Se não souber o ID, é possível encontrá-lo listando os insights no projeto. O ID de um insight é tudo o que aparece depois de insights/ no campo name do insight.
  • ETAG: identificador de uma versão do insight. Para receber o etag, faça o seguinte:
    1. Receba o insight usando o método insights.get.
    2. Encontre e copie o valor etag da resposta.

Método HTTP e URL:

POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.LateralMovementInsight/insights/INSIGHT_ID:markAccepted

Corpo JSON da solicitação:

{
  "etag": "ETAG"
}

Para enviar a solicitação, expanda uma destas opções:

A resposta contém o insight, agora com o estado ACCEPTED:

{
  "name": "projects/123456789012/locations/global/insightTypes/google.iam.policy.LateralMovementInsight/insights/13088eec-9573-415f-81a7-46e1a260e860",
  "description": "Service account service-account@another-project.iam.gserviceaccount.com from another project can impersonate 2 service account(s) under this project.",
  "content": {
    "impersonator": {
      "serviceAccount": "service-account@another-project.iam.gserviceaccount.com",
      "serviceAccountOwner": "//cloudresourcemanager.googleapis.com/projects/987654321098",
      "isGoogleManaged": false
    },
    "targetServiceAccounts": [
      "target-service-account-1@this-project.iam.gserviceaccount.com",
      "target-service-account-2@this-project.iam.gserviceaccount.com"
    ],
    "impersonationPolicy": {
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
      "role": "roles/editor",
      "member": "serviceAccount:service-account@another-project.iam.gserviceaccount.com",
      "condition": {
        "expression": "",
        "title": "",
        "description": "",
        "location": ""
      }
    },
    "impersonationPermissionUsage": [
      {
        "permission": "iam.serviceAccounts.actAs"
        "used": false
      }
    ],
    "hasPermissionUsageData": true
  },
  "lastRefreshTime": "2021-03-13T08:00:00Z",
  "observationPeriod": "7776000s",
  "stateInfo": {
    "state": "ACCEPTED"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/03f3dc20-f9e7-4502-95ab-bf7d3164846f"
    }
  ],
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "insightSubtype": "CROSS_PROJECT_IMPERSONATION",
  "etag": "\"f48fa6a1b15c7741\""
}

Para saber mais sobre as informações de estado de um insight, consulte Analisar insights de movimento lateral nesta página.

A seguir