Como gerenciar o acesso a dados para assinantes do Security Lake - Amazon Security Lake

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como gerenciar o acesso a dados para assinantes do Security Lake

Os assinantes com acesso aos dados da fonte no Amazon Security Lake são notificados sobre novos objetos de uma fonte à medida que os dados são gravados no bucket do S3. Por padrão, os assinantes são notificados sobre novos objetos por meio de um endpoint HTTPS fornecido por eles. Como alternativa, assinantes podem ser notificados sobre novos objetos por uma fila do Amazon Simple Queue Service (Amazon SQS).

Pré-requisitos para a criação de um assinante com acesso a dados

É necessário concluir os pré-requisitos a seguir antes de criar um assinante com acesso a dados no Security Lake.

Verificar permissões

Para verificar suas permissões, use o IAM para revisar as políticas do IAM que estão anexadas à sua identidade do IAM. Em seguida, compare as informações dessas políticas com a seguinte lista de ações (de permissões) que você deve ter para notificar os assinantes quando novos dados são gravados no data lake.

Serão necessárias permissões para executar as seguintes ações:

  • iam:CreateRole

  • iam:DeleteRolePolicy

  • iam:GetRole

  • iam:PutRolePolicy

  • lakeformation:GrantPermissions

  • lakeformation:ListPermissions

  • lakeformation:RegisterResource

  • lakeformation:RevokePermissions

  • ram:GetResourceShareAssociations

  • ram:GetResourceShares

  • ram:UpdateResourceShare

Além da lista anterior, você também precisará de permissão para executar as seguintes ações:

  • events:CreateApiDestination

  • events:CreateConnection

  • events:DescribeRule

  • events:ListApiDestinations

  • events:ListConnections

  • events:PutRule

  • events:PutTargets

  • s3:GetBucketNotification

  • s3:PutBucketNotification

  • sqs:CreateQueue

  • sqs:DeleteQueue

  • sqs:GetQueueAttributes

  • sqs:GetQueueUrl

  • sqs:SetQueueAttributes

Obtenha o ID externo do assinante

Para criar um assinante, além do Conta da AWS ID do assinante, você também precisará obter o ID externo. O ID externo é um identificador exclusivo que o assinante fornece a você. O Security Lake adiciona o ID externo ao perfil do IAM do assinante que ele cria. Você usa o ID externo ao criar um assinante no console do Security Lake, por meio da API ou da AWS CLI.

Para obter mais informações sobre IDs externas, consulte Como usar uma ID externa ao conceder acesso aos seus AWS recursos a terceiros no Guia do usuário do IAM.

Importante

Se você planeja usar o console do Security Lake para adicionar um assinante, você pode pular a próxima etapa e ir para Como criar um assinante com acesso a dados. O console do Security Lake oferece um processo simplificado para começar e cria todos os perfis necessários do IAM ou usa os perfis existentes em seu nome.

Se você planeja usar a API Security Lake ou AWS CLI adicionar um assinante, continue com a próxima etapa para criar uma função do IAM para invocar destinos de EventBridge API.

Crie uma função do IAM para invocar EventBridge destinos de API (API e AWS CLI etapa somente)

Se você estiver usando o Security Lake por meio da API ou AWS CLI, crie uma função no AWS Identity and Access Management (IAM) que conceda à Amazon EventBridge permissões para invocar destinos de API e enviar notificações de objetos para os endpoints HTTPS corretos.

Depois de criar esse perfil do IAM, você precisará do nome do recurso da Amazon (ARN) da função para criar o assinante. Esse perfil do IAM não é necessária se o assinante pesquisar dados de uma fila do Amazon Simple Queue Service (Amazon SQS) ou consultar dados diretamente do AWS Lake Formation. Para obter mais informações sobre esse tipo de método de acesso aos dados (tipo de acesso), consulte Gerenciando o acesso de consulta para assinantes do Security Lake.

Anexe a política a seguir ao seu perfil do IAM:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowInvokeApiDestination", "Effect": "Allow", "Action": [ "events:InvokeApiDestination" ], "Resource": [ "arn:aws:events:{us-west-2}:{123456789012}:api-destination/AmazonSecurityLake*/*" ] } ] }

Anexe a seguinte política de confiança à sua função do IAM EventBridge para permitir que você assuma a função:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEventBridgeToAssume", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

O Security Lake cria automaticamente um perfil do IAM que permite ao assinante ler dados do data lake (ou pesquisar eventos de uma fila do Amazon SQS, se esse for o método preferido de notificação). Essa função é protegida por uma política AWS gerenciada chamada AmazonSecurityLakePermissionsBoundary.

Como criar um assinante com acesso a dados

Escolha um dos métodos de acesso a seguir para criar um assinante com acesso aos dados atuais Região da AWS.

Console
  1. Abra o console do Security Lake em https://console.aws.amazon.com/securitylake/.

  2. Usando o Região da AWS seletor no canto superior direito da página, selecione a região em que você deseja criar o assinante.

  3. No painel de navegação, escolha Assinantes.

  4. Na página Assinantes, escolha Criar assinante.

  5. Para obter Detalhes do assinante, insira o Nome do assinante e uma Descrição opcional.

    A região é preenchida automaticamente conforme sua seleção atual Região da AWS e não pode ser modificada.

  6. Para Fontes de log e eventos, escolha quais fontes o assinante está autorizado a consumir.

  7. Para Método de acesso a dados, escolha S3 para configurar o acesso aos dados para o assinante.

  8. Para credenciais de assinante, forneça o ID do assinante e o Conta da AWS ID externo.

  9. (Opcional) Para obter Detalhes da notificação, se você quiser que o Security Lake crie uma fila do Amazon SQS que o assinante possa sondar para receber notificações de objetos, selecione fila SQS. Se você quiser que o Security Lake envie notificações EventBridge para um endpoint HTTPS, selecione Endpoint de assinatura.

    Se você selecionar Endpoint da assinatura, faça também o seguinte:

    1. Insira o Endpoint da assinatura. Exemplos de formatos de endpoint válidos incluem http://example.com. Opcionalmente, você também pode fornecer um nome de chave HTTPS e um valor de chave HTTPS.

    2. Para o Service Access, crie uma nova função do IAM ou use uma função existente do IAM que dê EventBridge permissão para invocar destinos de API e enviar notificações de objetos para os endpoints corretos.

      Para obter informações sobre como criar uma nova função do IAM, consulte Criar função do IAM para invocar destinos de EventBridge API.

  10. (Opcional) Em Tags, insira até 50 tags para atribuir ao assinante.

    Uma tag é um rótulo que você pode definir e atribuir a determinados tipos de AWS recursos. Cada tag consiste em uma chave de tag necessária e um valor de tag opcional. As tags podem ajudar você a identificar, categorizar e gerenciar recursos de diferentes maneiras. Para saber mais, consulte Colocar tags em recursos do Amazon Security Lake.

  11. Escolha Criar.

API

Para criar um assinante com acesso a dados de forma programática, use a CreateSubscriberoperação da API Security Lake. Se você estiver usando o AWS Command Line Interface (AWS CLI), execute o comando create-subscriber.

Em sua solicitação, use esses parâmetros para especificar as seguintes configurações para o assinante:

  • Para sources, especifique cada fonte que você deseja que o assinante acesse.

  • ParasubscriberIdentity, especifique o ID da AWS conta e o ID externo que o assinante usará para acessar os dados de origem.

  • Parasubscriber-name, especifique o nome do assinante.

  • Em accessTypes, especifique S3.

Exemplo 1

O exemplo a seguir cria um assinante com acesso aos dados na AWS região atual para a identidade de assinante especificada para uma AWS fonte.

$ aws securitylake create-subscriber \ --subscriber-identity {"accountID": 1293456789123,"externalId": 123456789012} \ --sources [{awsLogSource: {sourceName: VPC_FLOW, sourceVersion: 1.0}}] \ --subscriber-name subscriber name \ --access-types S3

Exemplo 2

O exemplo a seguir cria um assinante com acesso aos dados na AWS região atual para a identidade de assinante especificada para uma fonte personalizada.

$ aws securitylake create-subscriber \ --subscriber-identity {"accountID": 1293456789123,"externalId": 123456789012} \ --sources [{customLogSource: {sourceName: custom-source-name, sourceVersion: 1.0}}] \ --subscriber-name subscriber name --access-types S3

Os exemplos anteriores estão formatados para Linux, macOS ou Unix e usam o caractere de continuação de linha com barra invertida (\) para melhorar a legibilidade.

(Opcional) Depois de criar um assinante, use a CreateSubscriberNotificationoperação para especificar como notificar o assinante quando novos dados forem gravados no data lake para as fontes que você deseja que o assinante acesse. Se você estiver usando o AWS Command Line Interface (AWS CLI), execute o create-subscriber-notificationcomando.

  • Para substituir o método de notificação padrão (endpoint HTTPS) e criar uma fila do Amazon SQS, especifique valores para os parâmetros sqsNotificationConfiguration.

  • Se você preferir a notificação com um endpoint HTTPS, especifique valores para os parâmetros httpsNotificationConfiguration.

  • Para o targetRoleArn campo, especifique o ARN da função do IAM que você criou para invocar EventBridge destinos de API.

$ aws securitylake create-subscriber-notification \ --subscriber-id "12345ab8-1a34-1c34-1bd4-12345ab9012" \ --configuration httpsNotificationConfiguration={"targetRoleArn"="arn:aws:iam::XXX:role/service-role/RoleName", "endpoint"="https://account-management.$3.$2.securitylake.aws.dev/v1/datalake"}

Para obter osubscriberID, use a ListSubscribersoperação da API Security Lake. Se você estiver usando o AWS Command Line Interface (AWS CLI), execute o comando list-subscriber.

$ aws securitylake list-subscribers

Para alterar posteriormente o método de notificação (fila Amazon SQS ou endpoint HTTPS) para o assinante, use a UpdateSubscriberNotificationoperação ou, se estiver usando o, execute o AWS CLI comando. update-subscriber-notification Você também pode alterar o método de notificação usando o console do Security Lake: selecione o assinante na página Assinantes e escolha Editar.

Exemplo de mensagem de notificação de objeto

{ "source": "aws.s3", "time": "2021-11-12T00:00:00Z", "account": "123456789012", "region": "ca-central-1", "resources": [ "arn:aws:s3:::example-bucket" ], "detail": { "bucket": { "name": "example-bucket" }, "object": { "key": "example-key", "size": 5, "etag": "b57f9512698f4b09e608f4f2a65852e5" }, "request-id": "N4N7GDK58NMKJ12R", "requester": "securitylake.amazonaws.com" } }

Como atualizar um assinante de dados

Você pode atualizar um assinante alterando as fontes que o assinante consome. Você também pode atribuir tags ou editar tags para um assinante. Uma tag é um rótulo que você pode definir e atribuir a determinados tipos de AWS recursos, incluindo assinantes. Para saber mais, consulte Colocar tags em recursos do Amazon Security Lake.

Escolha um dos métodos de acesso e siga estas etapas para definir novas fontes para uma assinatura existente.

Console
  1. Abra o console do Security Lake em https://console.aws.amazon.com/securitylake/.

  2. No painel de navegação, escolha Assinantes.

  3. Selecione o assinante.

  4. Escolha Editar e execute uma das seguintes ações:

    • Para atualizar as fontes do assinante, insira as novas configurações na seção Fontes de log e eventos.

    • Para atribuir ou editar tags para o assinante, altere as tags conforme necessário na seção Tags.

  5. Ao concluir, escolha Salvar.

API

Para atualizar programaticamente as fontes de acesso aos dados de um assinante, use a UpdateSubscriberoperação da API Security Lake. Se você estiver usando o AWS Command Line Interface (AWS CLI), execute o comando update-subscriber. Em sua solicitação, use os parâmetros sources para especificar cada fonte que você deseja que o assinante acesse.

$ aws securitylake update-subscriber --subscriber-id subscriber ID

Para obter uma lista de assinantes associados a uma organização específica Conta da AWS ou a uma organização, use a ListSubscribersoperação. Se você estiver usando o AWS Command Line Interface (AWS CLI), execute o comando list-subscribers.

$ aws securitylake list-subscribers

Para revisar as configurações atuais de um assinante específico, use a GetSubscriberoperação. execute o comando get-subscriber. Em seguida, o Security Lake retorna o nome e a descrição do assinante, o ID externo e informações adicionais. Se você estiver usando o AWS Command Line Interface (AWS CLI), execute o comando get-subscriber.

Para atualizar o método de notificação para um assinante, use a UpdateSubscriberNotificationoperação. Se você estiver usando o AWS Command Line Interface (AWS CLI), execute o update-subscriber-notificationcomando. Por exemplo, você pode especificar um novo endpoint HTTPS para o assinante ou alternar de um endpoint HTTPS para uma fila do Amazon SQS.

Como remover um assinante de dados

Se você não quiser mais que um assinante consuma dados do Security Lake, você pode remover o assinante seguindo estas etapas.

Console
  1. Abra o console do Security Lake em https://console.aws.amazon.com/securitylake/.

  2. No painel de navegação, escolha Assinantes.

  3. Selecione o assinante que deseja remover.

  4. Selecione Excluir e confirme a ação. Isso excluirá o assinante e todas as configurações de notificação associadas.

API

Com base no seu cenário, siga um destes procedimentos:

  • Para excluir o assinante e todas as configurações de notificação associadas, use a DeleteSubscriberoperação da API Security Lake. Se você estiver usando o AWS Command Line Interface (AWS CLI), execute o comando delete-subscriber.

  • Para reter o assinante, mas interromper futuras notificações para o assinante, use a DeleteSubscriberNotificationoperação da API Security Lake. Se você estiver usando o AWS Command Line Interface (AWS CLI), execute o delete-subscriber-notificationcomando run the.