Monitoramento de chamadas de API em Contas da AWS usando o registro do AWS CloudTrail - Amazon CodeCatalyst

Monitoramento de chamadas de API em Contas da AWS usando o registro do AWS CloudTrail

O Amazon CodeCatalyst é integrado ao AWS CloudTrail, um serviço que fornece um registro das ações realizadas por um usuário, um perfil ou um AWS service (Serviço da AWS). O CloudTrail captura chamadas de API realizadas em nome do CodeCatalyst em Contas da AWS conectadas como eventos. Se você criar uma trilha, poderá habilitar a entrega contínua de eventos do CloudTrail para um bucket do S3, incluindo eventos para o CodeCatalyst. Se você não configurar uma trilha, ainda poderá visualizar os eventos mais recentes no console do CloudTrail em Event history (Histórico de eventos).

O CodeCatalyst suporta as seguintes ações como eventos nos arquivos de log do CloudTrail:

Importante

Embora várias contas possam ser associadas a um espaço, o registro do CloudTrail para eventos em espaços e projetos do CodeCatalyst se aplica somente à conta de faturamento.

A conta de faturamento do espaço é sua Conta da AWS que é cobrada pelos recursos do CodeCatalyst além do nível gratuito da AWS. Várias contas podem ser conectadas a um espaço, enquanto somente uma conta pode ser a conta de faturamento designada. A conta de faturamento ou contas adicionais conectadas para o espaço podem ter perfis do IAM que são usadas para implantar recursos e infraestrutura da AWS, como um cluster Amazon ECS ou um bucket do S3, a partir dos fluxos de trabalho do CodeCatalyst. Você pode usar o YAML do fluxo de trabalho para identificar a Conta da AWS em que você implantou.

nota

Os recursos da AWS que são implantados em contas conectadas para fluxos de trabalho do CodeCatalyst não são registrados como parte do registro do CloudTrail para o espaço do CodeCatalyst. Por exemplo, os recursos do CodeCatalyst incluem um espaço ou projeto. Os recursos da AWS incluem um serviço do Amazon ECS ou uma função do Lambda. O registro do CloudTrail deve ser configurado separadamente para cada Conta da AWS local em que os recursos são implantados.

O registro do CodeCatalyst em contas conectadas inclui as seguintes considerações:

  • O acesso aos eventos do CloudTrail é gerenciado com o IAM na conta conectada e não no CodeCatalyst.

  • Conexões de terceiros, como a vinculação a um repositório do GitHub, resultarão na gravação de nomes de recursos de terceiros nos logs do CloudTrail.

nota

O registro do CloudTrail para eventos do CodeCatalyst está no nível do espaço e não isola os eventos pelos limites do projeto.

Para obter mais informações sobre o CloudTrail, consulte o Guia do usuário do AWS CloudTrail.

nota

Esta seção descreve o registro do CloudTrail para todos os eventos registrados em um espaço do CodeCatalyst e as Contas da AWS conectadas ao CodeCatalyst. Além disso, para revisar todos os eventos registrados em um espaço do CodeCatalyst, você também pode usar a AWS CLI e o comando aws codecatalyst list-event-logs. Para ter mais informações, consulte Acesso a eventos de logs usando o registro de eventos.

Eventos de espaços do CodeCatalyst

As ações no CodeCatalyst para gerenciar recursos em nível de espaço e em nível de projeto são registradas em log na conta de faturamento do espaço. Para registro em log do CloudTrail em um espaço do CodeCatalyst, os eventos são registrados em log com as considerações a seguir.

  • Os eventos do CloudTrail se aplicam a todo o espaço e não têm como escopo nenhum projeto único.

  • Quando você conecta uma Conta da AWS a um espaço do CodeCatalyst, os eventos registráveis para conexões da conta serão registrados nessa Conta da AWS. Depois de habilitar essa conexão, você não poderá desativá-la.

  • Quando você conecta uma Conta da AWS a um espaço do CodeCatalyst e a designa como a conta de faturamento do espaço, os eventos são registrados nessa Conta da AWS. Depois de habilitar essa conexão, você não poderá desativá-la.

    Eventos para recursos no nível do espaço e no nível do projeto são registrados somente na conta de faturamento. Para alterar a conta de destino do CloudTrail, atualize a conta de faturamento no CodeCatalyst. No início do próximo ciclo de faturamento mensal, a alteração entra em vigor para a nova conta de faturamento no CodeCatalyst. Depois disso, a conta de destino do CloudTrail é atualizada.

Veja a seguir exemplos de eventos na AWS relacionados a ações no CodeCatalyst para gerenciar recursos no nível do espaço e no nível do projeto. As seguintes APIs são lançadas por meio do SDK e da CLI. Os eventos serão registrados na Conta da AWS especificada como conta de faturamento para o espaço do CodeCatalyst.

Conexões de contas e eventos de faturamento do CodeCatalyst

Veja a seguir exemplos de eventos na AWS relacionados a ações no CodeCatalyst para conexões de contas ou faturamento:

  • AcceptConnection

  • AssociateIAMRoletoConnection

  • DeleteConnection

  • DissassociateIAMRolefromConnection

  • GetBillingAuthorization

  • GetConnection

  • GetPendingConnection

  • ListConnections

  • ListIAMRolesforConnection

  • PutBillingAuthorization

  • RejectConnection

Informações do CodeCatalyst no CloudTrail

O CloudTrail é habilitado em uma Conta da AWS quando ela é criada. Quando você conecta essa Conta da AWS a um espaço do CodeCatalyst, os eventos desse espaço que ocorrem nessa Conta da AWS são registrados em logs do CloudTrail nessa conta da AWS. Os eventos registráveis no CodeCatalyst são registrados como eventos do CloudTrail nos logs do CloudTrail na conta conectada e no Histórico de eventos no console do CloudTrail, junto com outros eventos da AWS registráveis nessa conta.

Cada entrada de log ou evento contém informações sobre quem gerou a solicitação. As informações de identidade ajudam a determinar:

  • Se a solicitação foi feita por um usuário com o ID do builder AWS.

  • Se a solicitação foi feita com credenciais de usuário raiz ou usuário do IAM AWS Identity and Access Management

  • Se a solicitação foi feita com credenciais de segurança temporárias de um perfil ou de um usuário federado.

  • Se a solicitação foi feita por outro AWS serviço.

Para mais informações, consulte Elemento userIdentity do CloudTrail.

Acesso a eventos do CloudTrail

Para ter um registro contínuo de eventos em sua Conta da AWS, incluindo os eventos de atividade do CodeCatalyst na Conta da AWS, crie uma trilha. Uma trilha permite que o CloudTrail forneça arquivos de log para um bucket do S3. Por padrão, quando você cria uma trilha no console, ela é aplicada a todas as Regiões da AWS. A trilha registra eventos de todas as regiões na partição da AWS e fornece os arquivos de log ao bucket do S3 que você especificar. Além disso, é possível configurar outros produtos da AWS para analisar mais profundamente e agir sobre os dados de eventos coletados nos logs do CloudTrail. Para mais informações, consulte:

Uma trilha é uma configuração que permite a entrega de eventos como arquivos de log a um bucket do S3 especificado. Os arquivos de log do CloudTrail contêm uma ou mais entradas de log. Um evento representa uma única solicitação de qualquer fonte, e inclui informações sobre a ação solicitada, data e hora da ação, parâmetros de solicitação e assim por diante. Os arquivos de log do CloudTrail não são um rastreamento de pilha ordenada de chamadas de API pública, portanto não são exibidos em uma ordem específica.

Exemplo de evento de conexões da conta do CodeCatalyst na AWS

O exemplo a seguir mostra uma entrada de log do CloudTrail que demonstra a ação ListConnections. Para uma Conta da AWS que está conectada ao espaço, ListConnections é usado para visualizar todas as conexões da conta com o CodeCatalyst para essa Conta da AWS. O evento será registrado na Conta da AWS local especificada em accountId e o valor de arn será o nome do recurso da Amazon (ARN) do perfil usado para a ação.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "role-ARN", "accountId": "account-ID", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "role-ARN", "accountId": "account-ID", "userName": "user-name" }, "webIdFederationData": {}, "attributes": { "creationDate": "2022-09-06T15:04:31Z", "mfaAuthenticated": "false" } } }, "eventTime": "2022-09-06T15:08:43Z", "eventSource": "account-ID", "eventName": "ListConnections", "awsRegion": "us-west-2", "sourceIPAddress": "192.168.0.1", "userAgent": "aws-cli/1.18.147 Python/2.7.18 Linux/5.4.207-126.363.amzn2int.x86_64 botocore/1.18.6", "requestParameters": null, "responseElements": null, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 ", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 ", "readOnly": true, "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "account-ID", "eventCategory": "Management" }

Exemplo de evento de recurso do projeto do CodeCatalyst na AWS

O exemplo a seguir mostra uma entrada de log do CloudTrail que demonstra a ação CreateDevEnvironment. Uma Conta da AWS que esteja conectada ao espaço e seja a conta de faturamento designada para o espaço é usada para eventos no nível do projeto no espaço, como a criação de um Ambiente de Desenvolvimento.

Em userIdentity, no campo accountId, está o ID da conta do IAM Identity Center (432677196278) que hospeda o banco de identidades para todas as identidades de ID do builder AWS. Esse ID da conta contém as seguintes informações sobre o usuário do CodeCatalyst do evento.

  • O campo type indica o tipo de entidade do IAM para a solicitação. Para eventos do CodeCatalyst para recursos de espaço e de projeto, esse valor é IdentityCenterUser. O campo accountId especifica a conta proprietária da entidade que foi usada para obter credenciais.

  • O campo userId contém o identificador de ID do builder AWS para o usuário.

  • O campo identityStoreArn contém o ARN do perfil da conta e do usuário do repositório de identidades.

O campo recipientAccountId contém o ID da conta de faturamento do espaço, com um valor de exemplo aqui de 111122223333.

Para mais informações, consulte Elemento userIdentity do CloudTrail.

{ "eventVersion": "1.09", "userIdentity": { "type": "IdentityCenterUser", "accountId": "432677196278", "onBehalfOf": { "userId": "user-ID", "identityStoreArn": "arn:aws:identitystore::432677196278:identitystore/d-9067642ac7" }, "credentialId": "ABCDefGhiJKLMn11Lmn_1AbCDEFgHijk-AaBCdEFGHIjKLmnOPqrs11abEXAMPLE" }, "eventTime": "2023-05-18T17:10:50Z", "eventSource": "codecatalyst.amazonaws.com", "eventName": "CreateDevEnvironment", "awsRegion": "us-west-2", "sourceIPAddress": "192.168.0.1", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", "requestParameters": { "spaceName": "MySpace", "projectName": "MyProject", "ides": [{ "runtime": "public.ecr.aws/q6e8p2q0/cloud9-ide-runtime:2.5.1", "name": "Cloud9" }], "instanceType": "dev.standard1.small", "inactivityTimeoutMinutes": 15, "persistentStorage": { "sizeInGiB": 16 } }, "responseElements": { "spaceName": "MySpace", "projectName": "MyProject", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 " }, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "readOnly": false, "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "sharedEventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "eventCategory": "Management" }
nota

Em alguns eventos, o agente do usuário pode não ser conhecido. Nesse caso, o CodeCatalyst fornecerá um valor de Unknown no campo userAgent no evento do CloudTrail.

Consulta das trilhas de eventos do CodeCatalyst

Você pode criar e gerenciar consultas para os logs do CloudTrail usando uma tabela de consultas no Amazon Athena. Para ter mais informações sobre a criação de uma consulta, veja Consultar os logs do AWS CloudTrail no Manual do usuário do Amazon Athena.