Controle de acesso com o Amazon Data Firehose - Amazon Data Firehose

Controle de acesso com o Amazon Data Firehose

As seções a seguir abordam como controlar o acesso de entrada e saída dos recursos do Amazon Data Firehose. As informações abordadas incluem como conceder acesso à sua aplicação para que ela possa enviar dados para seu fluxo do Firehose. Elas também descrevem como é possível conceder ao Amazon Data Firehose acesso ao bucket do Amazon Simple Storage Service (Amazon S3), ao cluster do Amazon Redshift ou ao cluster do Amazon OpenSearch Service, bem como as permissões de acesso necessárias se você usar o Datadog, o Dynatrace, o LogicMonitor, o MongoDB, o New Relic, o Splunk ou o Sumo Logic como destino. Por fim, neste tópico, você encontrará orientações sobre como configurar o Amazon Data Firehose para que ele possa entregar dados a um destino que pertence a outra conta da AWS. A tecnologia para gerenciar todas essas formas de acesso é o AWS Identity and Access Management (IAM). Para obter mais informações sobre o IAM, consulte O que é o IAM?.

Concessão de acesso a seus recursos do Firehose

Para conceder à sua aplicação acesso ao fluxo do Firehose, use uma política semelhante a este exemplo. É possível ajustar as operações de API individuais às quais concede acesso modificando a seção Action ou conceder acesso a todas as operações com "firehose:*".

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:DeleteDeliveryStream", "firehose:PutRecord", "firehose:PutRecordBatch", "firehose:UpdateDestination" ], "Resource": [ "arn:aws:firehose:us-east-1:123456789012:deliverystream/delivery-stream-name" ] } ] }

Concessão ao Firehose de acesso ao seu cluster privado do Amazon MSK

Se a fonte do seu fluxo do Firehose for um cluster privado do Amazon MSK, use uma política similar a este exemplo.

Você deve adicionar uma política como essa à política baseada em recursos do cluster para conceder à entidade principal do serviço do Firehose permissão de invocar a operação de API CreateVpcConnection do Amazon MSK.

Permissão para o Firehose assumir um perfil do IAM

Esta seção descreve as permissões e as políticas que concedem ao Amazon Data Firehose acesso para ingerir, processar e entregar dados da fonte ao destino.

nota

Se você usar o console para criar um fluxo do Firehose e escolher a opção de criar de um novo perfil, a AWS anexará a política de confiança necessária a esse perfil. Por outro lado, se você quiser que o Amazon Data Firehose use um perfil do IAM existente ou se criar um perfil, anexe a política de confiança a seguir a esse perfil para que o Amazon Data Firehose possa assumi-lo. Edite as políticas para substituir account-id por seu ID da conta da AWS. Para obter informações sobre como modificar a relação de confiança de um perfil, consulte Modificação de um perfil.

O Amazon Data Firehose usa um perfil do IAM para todas as permissões de que o fluxo do Firehose precisa para processar e entregar os dados. Certifique-se de que as políticas de confiança a seguir estejam anexadas a esse perfil para que o Amazon Data Firehose possa assumi-lo.

Se você escolher o Amazon MSK como fonte do fluxo do Firehose, deverá especificar outro perfil do IAM que conceda ao Amazon Data Firehose permissões para ingerir dados da fonte do cluster do Amazon MSK especificado. Certifique-se de que as políticas de confiança a seguir estejam anexadas a esse perfil para que o Amazon Data Firehose possa assumi-lo.

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

Certifique-se de que esse perfil que concede permissões ao Amazon Data Firehose para ingerir dados da fonte do cluster do Amazon MSK especificado conceda as permissões a seguir:

Concessão ao Firehose de acesso ao AWS Glue para conversão de formato de dados

Se o seu fluxo do Firehose fizer conversão de formato de dados, o Amazon Data Firehose referenciará as definições de tabela armazenadas no AWS Glue. Para conceder ao Amazon Data Firehose o acesso necessário ao AWS Glue, adicione a instrução a seguir à política. Para obter informações sobre como descobrir o ARN da tabela, consulte Especificação de ARNs de recursos do AWS Glue.

{ "Sid": "", "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetTableVersion", "glue:GetTableVersions" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/b", "arn:aws:glue:us-east-1:123456789012:table/b/easd" ] }, { actions: ['glue:GetSchemaVersion'], grantee: options.role, resourceArns: ['*'], }

A política recomendada para obter esquemas do registro do esquema não tem restrições de recursos. Para obter mais informações, consulte Exemplos do IAM para desserializadores no Guia do desenvolvedor do AWS Glue.

Concessão ao Firehose de acesso a um destino do Amazon S3

Quando você usa um destino do Amazon S3, o Amazon Data Firehose entrega dados ao bucket do S3 e também pode usar uma chave do AWS KMS que você possui para criptografia de dados. Se o registro em log dos erros estiver habilitado, o Amazon Data Firehose também enviará os erros de entrega de dados para os fluxos e o grupo de logs do CloudWatch. Você precisa ter um perfil do IAM ao criar um fluxo do Firehose. O Amazon Data Firehose assume esse perfil do IAM e ganha acesso ao bucket, à chave e aos fluxos e ao grupo de logs do CloudWatch especificados.

Use a política de acesso padrão a seguir para permitir que o Amazon Data Firehose acesse o bucket do S3 e a chave do AWS KMS. Se você não tiver o bucket do S3, adicione s3:PutObjectAcl à lista de ações do Amazon S3. Isso concede ao proprietário do bucket acesso total aos objetos entregues pelo Amazon Data Firehose.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-east-1:123456789012:stream/stream-name" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket/prefix*" } } }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:function-name:function-version" ] } ] }

A política acima também tem uma declaração que permite o acesso ao Amazon Kinesis Data Streams. Se você não usar o Kinesis Data Streams como fonte de dados, poderá remover essa instrução. Se você usar o Amazon MSK como sua fonte, poderá substituir essa declaração pela a seguir:

{ "Sid":"", "Effect":"Allow", "Action":[ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource":"arn:aws:kafka:{{mskClusterRegion}}:{{mskClusterAccount}}:cluster/{{mskClusterName}}/{{clusterUUID}}" }, { "Sid":"", "Effect":"Allow", "Action":[ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource":"arn:aws:kafka:{{mskClusterRegion}}:{{mskClusterAccount}}:topic/{{mskClusterName}}/{{clusterUUID}}/{{mskTopicName}}" }, { "Sid":"", "Effect":"Allow", "Action":[ "kafka-cluster:DescribeGroup" ], "Resource":"arn:aws:kafka:{{mskClusterRegion}}:{{mskClusterAccount}}:group/{{mskClusterName}}/{{clusterUUID}}/*" }

Para obter mais informações sobre permitir que outros serviços da AWS acessem os recursos da AWS, consulte Criar um perfil para delegar permissões a um serviço da AWS no Guia do usuário do IAM.

Para saber como conceder ao Amazon Data Firehose acesso a um destino do Amazon S3 em outra conta, consulte Entrega entre contas a um destino do Amazon S3.

Conceder ao Firehose acesso às tabelas do Amazon S3

É necessário ter um perfil do IAM para criar um fluxo do Firehose. Use as etapas a seguir para criar uma política e um perfil do IAM. O Firehose assume esse perfil do IAM e executa as ações necessárias.

Faça login no Console de gerenciamento da AWS e abra o console do IAM, em https://console.aws.amazon.com/iam/.

Crie uma política e escolha JSON no editor de políticas. Adicione a política em linha a seguir, que concede ao Amazon S3 permissões, como permissões de leitura/gravação, permissões para atualizar a tabela no catálogo de dados, etc.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "S3TableAccessViaGlueFederation", "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetDatabase", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog/s3tablescatalog/*", "arn:aws:glue:us-east-1:123456789012:catalog/s3tablescatalog", "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/*", "arn:aws:glue:us-east-1:123456789012:table/*/*" ] }, { "Sid": "S3DeliveryErrorBucketPermission", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<error delivery bucket>", "arn:aws:s3:::<error delivery bucket>/*" ] }, { "Sid": "RequiredWhenUsingKinesisDataStreamsAsSource", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-east-1:123456789012:stream/<stream-name>" }, { "Sid": "RequiredWhenDoingMetadataReadsANDDataAndMetadataWriteViaLakeformation", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" }, { "Sid": "RequiredWhenUsingKMSEncryptionForS3ErrorBucketDelivery", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/<KMS-key-id>" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::<error delivery bucket>/prefix*" } } }, { "Sid": "LoggingInCloudWatch", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:log-group-name>:log-stream:<log-stream-name>" ] }, { "Sid": "RequiredWhenAttachingLambdaToFirehose", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:<function-name>:<function-version>" ] } ] }

A política tem instruções que permitem acesso ao Amazon Kinesis Data Streams, invocando funções do Lambda e acesso a chaves do AWS KMS. Se você não usar nenhum desses recursos, poderá remover as respectivas declarações. Se o registro em log dos erros estiver habilitado, o Amazon Data Firehose também enviará os erros de entrega de dados para os fluxos e o grupo de logs do CloudWatch. É necessário configurar os nomes do grupo de logs e do fluxo de logs para usar essa opção. Para os nomes de grupo de logs e fluxo de logs, consulte Monitoramento do Amazon Data Firehose usando o CloudWatch Logs.

Nas políticas em linha, substitua <error delivery bucket> pelo nome do bucket do Amazon S3, aws-account-id e região por um número válido de Conta da AWS e uma região do recurso.

Depois de criar a política, abra o console do IAM em https://console.aws.amazon.com/iam/ e crie um perfil do IAM com o AWS service (Serviço da AWS) como Tipo de entidade confiável.

Em Serviço ou Caso de Uso, escolha Kinesis. Em Caso de uso, escolha Kinesis Firehose.

Na próxima página, escolha a política criada na etapa anterior para anexar a esse perfil. Na página de análise, você encontrará uma política de confiança já anexada a esse perfil, dando permissões ao serviço do Firehose para assumir esse perfil. Quando você cria o perfil, o Amazon Data Firehose pode assumi-lo para executar as operações necessárias no AWS Glue e nos buckets do S3. Adicione a entidade principal do serviço do Firehose à política de confiança do perfil criado. Para obter mais informações, consulte Permissão para o Firehose assumir um perfil do IAM.

Concessão ao Firehose de acesso a um destino de tabelas do Apache Iceberg

Você deve ter um perfil do IAM antes de criar um fluxo do Firehose e tabelas do Apache Iceberg usando o AWS Glue. Use as etapas a seguir para criar uma política e um perfil do IAM. O Firehose assume esse perfil do IAM e executa as ações necessárias.

  1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em https://console.aws.amazon.com/iam/.

  2. Crie uma política e escolha JSON no editor de políticas.

  3. Adicione a política em linha a seguir, que concede ao Amazon S3 permissões, como permissões de leitura/gravação, permissões para atualizar a tabela no catálogo de dados, etc.

    A política acima tem uma declaração que permite o acesso ao Amazon Kinesis Data Streams, invocando funções do Lambda e acesso a chaves do KMS. Se você não usar nenhum desses recursos, poderá remover as respectivas declarações.

    Se o registro de erros em log estiver habilitado, o Firehose também enviará erros de entrega de dados para seu grupo de logs e fluxos do CloudWatch. Para isso, é necessário configurar os nomes do grupo de logs e do fluxo de logs. Para os nomes de grupo de logs e fluxo de logs, consulte Monitoramento do Amazon Data Firehose usando o CloudWatch Logs.

  4. Nas políticas em linha, substitua amzn-s3-demo-bucket pelo nome do bucket do Amazon S3, aws-account-id, e Região por um número válido de Conta da AWS e uma região de recursos.

    nota

    Esse perfil dá permissão a todos os bancos de dados e tabelas em seu catálogo de dados. Se você quiser, poderá conceder permissões somente para tabelas e bancos de dados específicos.

  5. Depois de criar a política, abra o console do IAM e crie um perfil do IAM com o AWS service (Serviço da AWS) como Tipo de entidade confiável.

  6. Em Serviço ou Caso de Uso, escolha Kinesis. Em Caso de uso, escolha Kinesis Firehose.

  7. Na próxima página, escolha a política criada na etapa anterior para anexar a esse perfil. Na página de análise, você encontrará uma política de confiança já anexada a esse perfil, dando permissões ao serviço do Firehose para assumir esse perfil. Quando você cria o perfil, o Amazon Data Firehose pode assumi-lo para executar as operações necessárias no AWS Glue e nos buckets do S3.

Conceder ao Firehose acesso a um destino do Amazon Redshift

Consulte os pontos a seguir ao conceder acesso ao Amazon Data Firehose ao usar um destino do Amazon Redshift.

Perfil do IAM e política de acesso

Quando você usa um destino do Amazon Redshift, o Amazon Data Firehose entrega os dados ao bucket do S3 como um local intermediário. Opcionalmente, ele pode usar uma chave do AWS KMS da qual você seja proprietário para criptografar os dados. Em seguida, o Amazon Data Firehose emite carrega os dados do bucket do S3 ao cluster provisionado do Amazon Redshift ou no grupo de trabalho do Amazon Redshift sem servidor. Se o registro em log dos erros estiver habilitado, o Amazon Data Firehose também enviará os erros de entrega de dados para os fluxos e o grupo de logs do CloudWatch. O Amazon Data Firehose usa o nome de usuário e a senha especificados do Amazon Redshift para acessar o cluster provisionado ou o grupo de trabalho do Amazon Redshift sem servidor e usa um perfil do IAM para acessar o bucket, a chave, o grupo de logs e os fluxos do CloudWatch especificados. Você precisa ter um perfil do IAM ao criar um fluxo do Firehose.

Use a política de acesso padrão a seguir para permitir que o Amazon Data Firehose acesse o bucket do S3 e a chave do AWS KMS. Se você não é o proprietário do bucket do S3, adicione s3:PutObjectAcl à lista de ações do Amazon S3, o que concede ao proprietário do bucket acesso total aos objetos entregues pelo Amazon Data Firehose. A política acima também tem uma instrução que concede acesso ao Amazon Kinesis Data Streams. Se você não usar o Kinesis Data Streams como fonte de dados, poderá remover essa instrução.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-east-1:123456789012:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:function-name:function-version" ] } ] }

Para obter mais informações sobre permitir que outros serviços da AWS acessem os recursos da AWS, consulte Criar um perfil para delegar permissões a um serviço da AWS no Guia do usuário do IAM.

Acesso da VPC a um cluster provisionado pelo Amazon Redshift ou a um grupo de trabalho do Amazon Redshift sem servidor

Se o cluster provisionado do Amazon Redshift ou um grupo de trabalho do Amazon Redshift sem servidor estiver em uma nuvem privada virtual (VPC), ele deve ser acessível publicamente com um endereço IP público. Além disso, conceda ao Amazon Data Firehose acesso ao cluster provisionado do Amazon Redshift ou ao grupo de trabalho do Amazon Redshift sem servidor desbloqueando os endereços IP do Amazon Data Firehose. O Amazon Data Firehose atualmente usa um bloco CIDR para cada região disponível.

Região Blocos CIDR
Leste dos EUA (Ohio)

13.58.135.96/27

Leste dos EUA (Norte da Virgínia) 52.70.63.192/27
Oeste dos EUA (Norte da Califórnia) 13.57.135.192/27
Oeste dos EUA (Oregon) 52.89.255.224/27
AWS GovCloud (Leste dos EUA) 18.253.138.96/27
AWS GovCloud (Oeste dos EUA) 52.61.204.160/27
Canadá (Central) 35.183.92.128/27
Oeste do Canadá (Calgary) 40.176.98.192/27
Ásia-Pacífico (Hong Kong) 18.162.221.32/27
Asia Pacific (Mumbai) 13.232.67.32/27
Ásia-Pacífico (Hyderabad) 18.60.192.128/27
Ásia-Pacífico (Seul) 13.209.1.64/27
Ásia-Pacífico (Singapura) 13.228.64.192/27
Ásia-Pacífico (Sydney) 13.210.67.224/27
Ásia-Pacífico (Jacarta) 108.136.221.64/27
Ásia-Pacífico (Tóquio) 13.113.196.224/27
Ásia-Pacífico (Osaka) 13.208.177.192/27
Ásia-Pacífico (Tailândia) 43.208.112.96/27
Ásia-Pacífico (Taipei) 43.212.53.160/27
China (Beijing) 52.81.151.32/27
China (Ningxia) 161.189.23.64/27
Europa (Zurique) 16.62.183.32/27
Europa (Frankfurt) 35.158.127.160/27
Europa (Irlanda) 52.19.239.192/27
Europa (Londres) 18.130.1.96/27
Europa (Paris) 35.180.1.96/27
Europa (Estocolmo) 13.53.63.224/27
Europa (Espanha) 18.100.71.96/27
Oriente Médio (Bahrein) 15.185.91.0/27
México (Central) 78.12.207.32/27
América do Sul (São Paulo) 18.228.1.128/27
Europa (Milão) 15.161.135.128/27
África (Cidade do Cabo) 13.244.121.224/27
Oriente Médio (Emirados Árabes Unidos) 3.28.159.32/27
Israel (Tel Aviv) 51.16.102.0/27
Ásia-Pacífico (Melbourne) 16.50.161.128/27
Ásia-Pacífico (Malásia) 43.216.58.0/27

Para obter mais informações sobre como desbloquear endereços IP, consulte a etapa Autorizar o acesso ao cluster no Guia de conceitos básicos do Amazon Redshift.

Conceder ao Firehose acesso a um destino público do OpenSearch Service

Quando você usa um destino do OpenSearch Service, o Amazon Data Firehose entrega dados ao cluster do OpenSearch Service e faz o backup simultâneo dos documentos com falha ou de todos os documentos no bucket do S3. Se o registro em log dos erros estiver habilitado, o Amazon Data Firehose também enviará os erros de entrega de dados para os fluxos e o grupo de logs do CloudWatch. O Amazon Data Firehose usa um perfil do IAM para acessar o domínio do OpenSearch Service, o bucket do S3, a chave do AWS KMS, os fluxos e o grupo de logs do CloudWatch especificados. Você precisa ter um perfil do IAM ao criar um fluxo do Firehose.

Use a política de acesso a seguir para permitir que o Amazon Data Firehose acesse o bucket do S3, o domínio do OpenSearch Service e a chave do AWS KMS. Se você não for o proprietário do bucket do S3, adicione s3:PutObjectAcl à lista de ações do Amazon S3, o que concede ao proprietário do bucket acesso total aos objetos entregues pelo Amazon Data Firehose. A política acima também tem uma instrução que concede acesso ao Amazon Kinesis Data Streams. Se você não usar o Kinesis Data Streams como fonte de dados, poderá remover essa instrução.

Para obter mais informações sobre permitir que outros serviços da AWS acessem os recursos da AWS, consulte Criar um perfil para delegar permissões a um serviço da AWS no Guia do usuário do IAM.

Para saber como conceder ao Amazon Data Firehose acesso a um cluster do OpenSearch Service em outra conta, consulte Entrega entre contas a um destino do OpenSearch Service.

Concessão ao Firehose de acesso a um destino do OpenSearch Service em uma VPC

Se o seu domínio do OpenSearch Service estiver em uma VPC, certifique-se de conceder ao Amazon Data Firehose as permissões descritas na seção anterior. Além disso, você precisa conceder ao Amazon Data Firehose as permissões a seguir para que ele possa acessar a VPC do seu domínio do OpenSearch Service.

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

  • ec2:DeleteNetworkInterface

Importante

Não revogue essas permissões depois de criar o fluxo do Firehose. Se você revogar essas permissões, seu fluxo do Firehose será degradado ou deixará de fornecer dados ao seu domínio de serviço do OpenSearch sempre que o serviço tentar consultar ou atualizar ENIs.

Importante

Ao especificar sub-redes para entregar dados ao destino em uma VPC privada, verifique se você tem um número suficiente de endereços IP livres nas sub-redes escolhidas. Se não houver endereços IP gratuitos disponíveis em uma sub-rede especificada, o Firehose não poderá criar ou adicionar ENIs para a entrega de dados na VPC privada, e a entrega será degradada ou falhará.

Ao criar ou atualizar seu fluxo do Firehose, você especifica um grupo de segurança para o Amazon Data Firehose usar quando enviar dados para o domínio do OpenSearch Service. É possível usar o mesmo grupo de segurança que o domínio do OpenSearch Service usa ou um grupo diferente. Se você especificar um grupo de segurança diferente, verifique se ele permite tráfego HTTPS de saída para o grupo de segurança do domínio do OpenSearch Service. Certifique-se também de que o grupo de segurança do domínio do OpenSearch Service permita o tráfego HTTPS do grupo de segurança que você especificou ao configurar o fluxo do Firehose. Se você usar o mesmo grupo de segurança para o fluxo do Firehose e para o domínio do OpenSearch Service, certifique-se de que a regra de entrada do grupo de segurança permita tráfego HTTPS. Para obter mais informações sobre regras de grupo de segurança, consulte Regras de grupo de segurança na documentação da Amazon VPC.

Concessão ao Firehose de acesso a um destino público do OpenSearch sem servidor

Quando você usa um destino do OpenSearch sem servidor, o Amazon Data Firehose entrega dados ao cluster do OpenSearch Service e faz o backup simultâneo dos documentos com falha ou de todos os documentos no bucket do S3. Se o registro em log dos erros estiver habilitado, o Amazon Data Firehose também enviará os erros de entrega de dados para os fluxos e o grupo de logs do CloudWatch. O Amazon Data Firehose usa um perfil do IAM para acessar a coleção do OpenSearch sem servidor, o bucket do S3, a chave do AWS KMS, o grupo e os fluxos de logs do CloudWatch especificados. Você precisa ter um perfil do IAM ao criar um fluxo do Firehose.

Use a política de acesso a seguir para permitir que o Amazon Data Firehose acesse o bucket do S3, o domínio do OpenSearch sem servidor e a chave do AWS KMS. Se você não for o proprietário do bucket do S3, adicione s3:PutObjectAcl à lista de ações do Amazon S3, o que concede ao proprietário do bucket acesso total aos objetos entregues pelo Amazon Data Firehose. A política acima também tem uma instrução que concede acesso ao Amazon Kinesis Data Streams. Se você não usar o Kinesis Data Streams como fonte de dados, poderá remover essa instrução.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-east-1:123456789012:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:function-name:function-version" ] }, { "Effect": "Allow", "Action": "aoss:APIAccessAll", "Resource": "arn:aws:aoss:us-east-1:123456789012:collection/collection-id" } ] }

Além da política acima, você também deve configurar o Amazon Data Firehose para ter as permissões mínimas a seguir atribuídas em uma política de acesso a dados:

[ { "Rules":[ { "ResourceType":"index", "Resource":[ "index/target-collection/target-index" ], "Permission":[ "aoss:WriteDocument", "aoss:UpdateIndex", "aoss:CreateIndex" ] } ], "Principal":[ "arn:aws:sts::123456789012:assumed-role/firehose-delivery-role-name/*" ] } ]

Para obter mais informações sobre permitir que outros serviços da AWS acessem os recursos da AWS, consulte Criar um perfil para delegar permissões a um serviço da AWS no Guia do usuário do IAM.

Concessão ao Firehose de acesso a um destino do OpenSearch sem servidor em uma VPC

Se a coleção do OpenSearch sem servidor estiver em uma VPC, certifique-se de conceder ao Amazon Data Firehose as permissões descritas na seção anterior. Além disso, você precisa conceder ao Amazon Data Firehose as permissões a seguir para que ele possa acessar a VPC do domínio do OpenSearch sem servidor.

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

  • ec2:DeleteNetworkInterface

Importante

Não revogue essas permissões depois de criar o fluxo do Firehose. Se você revogar essas permissões, seu fluxo do Firehose será degradado ou deixará de fornecer dados ao seu domínio de serviço do OpenSearch sempre que o serviço tentar consultar ou atualizar ENIs.

Importante

Ao especificar sub-redes para entregar dados ao destino em uma VPC privada, verifique se você tem um número suficiente de endereços IP livres nas sub-redes escolhidas. Se não houver endereços IP gratuitos disponíveis em uma sub-rede especificada, o Firehose não poderá criar ou adicionar ENIs para a entrega de dados na VPC privada, e a entrega será degradada ou falhará.

Ao criar ou atualizar o fluxo do Firehose, você especifica um grupo de segurança para o Firehose usar quando enviar dados para a coleção do OpenSearch sem servidor. É possível usar o mesmo grupo de segurança que a coleção do OpenSearch sem servidor usa ou um grupo diferente. Se você especificar um grupo de segurança diferente, verifique se ele permite tráfego HTTPS de saída para o grupo de segurança da coleção do OpenSearch Sem Servidor. Certifique-se também de que o grupo de segurança da coleção do OpenSearch sem servidor permita o tráfego HTTPS do grupo de segurança que você especificou ao configurar o fluxo do Firehose. Se você usar o mesmo grupo de segurança para o fluxo do Firehose e para a coleção do OpenSearch sem servidor, certifique-se de que a regra de entrada do grupo de segurança permita tráfego HTTPS. Para obter mais informações sobre regras de grupo de segurança, consulte Regras de grupo de segurança na documentação da Amazon VPC.

Concessão ao Firehose de acesso a um destino do Splunk

Quando você está usando um destino Splunk, o Amazon Data Firehose entrega os dados ao endpoint do Coletor de eventos de HTTP (HEC) do Splunk. Ele também faz o backup de dados no bucket do Amazon S3 especificado, e você também pode usar uma chave do AWS KMS da qual é proprietário para criptografia no lado do servidor do Amazon S3. Se o registro dos erros em log estiver habilitado, o Firehose enviará os erros de entrega de dados para os fluxos de logs do CloudWatch. Você também pode usar o AWS Lambda para transformação de dados.

Se você usa um balanceador de carga da AWS, certifique-se de que ele seja um Classic Load Balancer ou um Application Load Balancer. Além disso, habilite sessões persistentes com a expiração de cookies desabilitada para o Classic Load Balancer, e a expiração definida como máxima (7 dias) para o Application Load Balancer. Para obter informações sobre como fazer isso, consulte Persistência de sessão baseada na duração para Classic Load Balancer ou Application Load Balancer.

É necessário ter um perfil do IAM ao criar um fluxo do Firehose. O Firehose assume esse perfil do IAM e ganha acesso ao bucket, à chave e aos fluxos e ao grupo de logs do CloudWatch especificados.

Use a política de acesso padrão a seguir para permitir que o Amazon Data Firehose acesse seu bucket do S3. Se você não é o proprietário do bucket do S3, adicione s3:PutObjectAcl à lista de ações do Amazon S3, o que concede ao proprietário do bucket acesso total aos objetos entregues pelo Amazon Data Firehose. Essa política também concede ao Amazon Data Firehose acesso ao CloudWatch para registro dos erros em log, e ao AWS Lambda para transformação de dados. A política também tem uma instrução que permite o acesso ao Amazon Kinesis Data Streams. Se você não usar o Kinesis Data Streams como fonte de dados, poderá remover essa instrução. O Amazon Data Firehose não usa o IAM para acessar o Splunk. Para acessar o Splunk, ele usa o token HEC.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-east-1:123456789012:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:log-group-name:log-stream:*" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:function-name:function-version" ] } ] }

Para obter mais informações sobre permitir que outros serviços da AWS acessem os recursos da AWS, consulte Criar uma função para delegar permissões a um serviço da AWS no Guia do usuário do IAM.

Acesso ao Splunk na VPC

Se a plataforma do Splunk estiver em uma VPC, ela será acessível ao público com um endereço IP público. Além disso, conceda ao Amazon Data Firehose acesso à plataforma Splunk desbloqueando os endereços IP do Amazon Data Firehose. Atualmente, o Amazon Data Firehose usa os blocos CIDR a seguir.

Região Blocos CIDR
Leste dos EUA (Ohio)

18.216.68.160/27, 18.216.170.64/27, 18.216.170.96/27\

Leste dos EUA (Norte da Virgínia) 34.238.188.128/26, 34.238.188.192/26, 34.238.195.0/26
Oeste dos EUA (Norte da Califórnia) 13.57.180.0/26
Oeste dos EUA (Oregon) 34.216.24.32/27, 34.216.24.192/27, 34.216.24.224/27
AWS GovCloud (Leste dos EUA) 18.253.138.192/26
AWS GovCloud (Oeste dos EUA) 52.61.204.192/26
Ásia-Pacífico (Hong Kong) 18.162.221.64/26
Ásia-Pacífico (Mumbai) 13.232.67.64/26
Ásia-Pacífico (Seul) 13.209.71.0/26
Ásia-Pacífico (Singapura) 13.229.187.128/26
Ásia-Pacífico (Sydney) 13.211.12.0/26
Ásia-Pacífico (Tailândia) 43.208.112.128/26
Ásia-Pacífico (Tóquio) 13.230.21.0/27, 13.230.21.32/27
Canadá (Central) 35.183.92.64/26
Oeste do Canadá (Calgary) 40.176.98.128/26
Europa (Frankfurt) 18.194.95.192/27, 18.194.95.224/27, 18.195.48.0/27
Europa (Irlanda) 34.241.197.32/27, 34.241.197.64/27, 34.241.197.96/27
Europa (Londres) 18.130.91.0/26
Europa (Paris) 35.180.112.0/26
Europa (Espanha) 18.100.194.0/26
Europe (Stockholm) 13.53.191.0/26
Oriente Médio (Bahrein) 15.185.91.64/26
México (Central) 78.12.207.64/26
América do Sul (São Paulo) 18.228.1.192/26
Europa (Milão) 15.161.135.192/26
África (Cidade do Cabo) 13.244.165.128/26
Ásia-Pacífico (Osaka) 13.208.217.0/26
China (Beijing) 52.81.151.64/26
China (Ningxia) 161.189.23.128/26
Ásia-Pacífico (Jacarta) 108.136.221.128/26
Oriente Médio (Emirados Árabes Unidos) 3.28.159.64/26
Israel (Tel Aviv) 51.16.102.64/26
Europa (Zurique) 16.62.183.64/26
Ásia-Pacífico (Hyderabad) 18.60.192.192/26
Ásia-Pacífico (Melbourne) 16.50.161.192/26
Ásia-Pacífico (Malásia) 43.216.44.192/26

Ingestão de logs de fluxo da VPC no Splunk usando o Amazon Data Firehose

Para saber mais sobre como criar uma assinatura de log de fluxo da VPC, publicar no Firehose e enviar os logs de fluxo da VPC para um destino com suporte, consulte Ingestão de logs de fluxo da VPC no Splunk usando o Amazon Data Firehose.

Acesso ao Snowflake ou ao endpoint de HTTP

Não há um subconjunto de intervalos de endereços IP da AWS específico para o Amazon Data Firehose quando o destino é um endpoint de HTTP ou clusters públicos do Snowflake.

Para adicionar o Firehose a uma lista de permissões para clusters públicos do Snowflake ou aos seus endpoints públicos de HTTP ou HTTPS, adicione todos os intervalos de endereços IP da AWS atuais às suas regras de entrada.

nota

As notificações nem sempre são provenientes de endereços IP na mesma região da AWS do tópico associado. Você deve incluir o intervalo de endereços IP da AWS para todas as regiões.

Concessão ao Firehose de acesso a um destino do Snowflake

Quando você usa o Snowflake como destino, o Firehose entrega dados para uma conta do Snowflake usando o URL da sua conta do Snowflake. Ele também faz backup dos dados de erro no bucket do Amazon Simple Storage Service especificado, e você também pode usar uma chave do AWS Key Management Service da qual seja proprietário para a criptografia no lado do servidor do Amazon S3. Se o registro dos erros em log estiver habilitado, o Firehose enviará os erros de entrega de dados para os fluxos do CloudWatch Logs.

É necessário ter um perfil do IAM para criar um fluxo do Firehose. O Firehose assume esse perfil do IAM e ganha acesso ao bucket, à chave e aos fluxos e ao grupo do CloudWatch Logs especificados. Use a política de acesso padrão a seguir para permitir que o Firehose acesse o bucket do S3. Se você não for o proprietário do bucket do S3, adicione s3:PutObjectAcl à lista de ações do Amazon Simple Storage Service, o que concede ao proprietário do bucket acesso total aos objetos entregues pelo Firehose. Essa política também concede ao Firehose acesso ao CloudWatch para registro de erros em log. A política também tem uma instrução que permite o acesso ao Amazon Kinesis Data Streams. Se você não usar o Kinesis Data Streams como fonte de dados, poderá remover essa instrução. O Firehose não usa o IAM para acessar o Snowflake. Para acesso ao Snowflake, ele usa o URL da sua conta do Snowflake e o ID da VPCE do PrivateLink no caso de um cluster privado.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-east-1:123456789012:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:log-group-name:log-stream:*" ] } ] }

Para obter mais informações sobre permitir que outros serviços da AWS acessem os recursos da AWS, consulte Criar um perfil para delegar permissões a um serviço da AWS no Guia do usuário do IAM.

Acesso ao Snowflake na VPC

Se o cluster do Snowflake tiver um link privado habilitado, o Firehose usará um dos endpoints da VPC a seguir no momento da criação do link privado para entregar dados ao seu cluster privado sem passar pela Internet pública. Para isso, crie regras de rede do Snowflake para permitir a entrada dos AwsVpceIds a seguir para a Região da AWS em que seu cluster se encontra. Para obter mais informações, consulte Criação de regras de rede no Guia do usuário do Snowflake.

IDs de endpoint da VPC a serem usados com base nas regiões em que seu cluster se encontra
Região da AWS VPCE IDs
Leste dos EUA (Ohio)

vpce-0d96cafcd96a50aeb

vpce-0cec34343d48f537b

Leste dos EUA (Norte da Virgínia)

vpce-0b4d7e8478e141ba8

vpce-0b75cd681fb507352

vpce-01c03e63820ec00d8

vpce-0c2cfc51dc2882422

vpce-06ca862f019e4e056

vpce-020cda0cfa63f8d1c

vpce-0b80504a1a783cd70

vpce-0289b9ff0b5259a96

vpce-0d7add8628bd69a12

vpce-02bfb5966cc59b2af

vpce-09e707674af878bf2

vpce-049b52e96cc1a2165

vpce-0bb6c7b7a8a86cdbb

vpce-03b22d599f51e80f3

vpce-01d60dc60fc106fe1

vpce-0186d20a4b24ecbef

vpce-0533906401a36e416

vpce-05111fb13d396710e

vpce-0694613f4fbd6f514

vpce-09b21cb25fe4cc4f4

vpce-06029c3550e4d2399

vpce-00961862a21b033da

vpce-01620b9ae33273587

vpce-078cf4ec226880ac9

vpce-0d711bf076ce56381

vpce-066b7e13cbfca6f6e

vpce-0674541252d9ccc26

vpce-03540b88dedb4b000

vpce-0b1828e79ad394b95

vpce-0dc0e6f001fb1a60d

vpce-0d8f82e71a244098a

vpce-00e374d9e3f1af5ce

vpce-0c1e3d6631ddb442f

Oeste dos EUA (Oregon)

vpce-0f60f72da4cd1e4e7

vpce-0c60d21eb8b1669fd

vpce-01c4e3e29afdafbef

vpce-0cc6bf2a88da139de

vpce-0797e08e169e50662

vpce-033cbe480381b5c0e

vpce-00debbdd8f9eb10a5

vpce-08ec2f386c809e889

vpce-0856d14310857b545

Europa (Frankfurt)

vpce-068dbb7d71c9460fb

vpce-0a7a7f095942d4ec9

Europa (Irlanda)

vpce-06857e59c005a6276

vpce-04390f4f8778b75f2

vpce-011fd2b1f0aa172fd

Ásia-Pacífico (Tóquio)

vpce-06369e5258144e68a

vpce-0f2363cdb8926fbe8

Ásia-Pacífico (Singapura)

vpce-049cd46cce7a12d52

vpce-0e8965a1a4bdb8941

Ásia-Pacífico (Seul)

vpce-0aa444d9001e1faa1

vpce-04a49d4dcfd02b884

Ásia-Pacífico (Sydney)

vpce-048a60a182c52be63

vpce-03c19949787fd1859

Ásia-Pacífico (Mumbai)

vpce-0d68cb822f6f0db68

vpce-0517d32692ffcbde2

Europa (Londres)

vpce-0fd1874a0ba3b9374

vpce-08091b1a85e206029

América do Sul (São Paulo)

vpce-065169b8144e4f12e

vpce-0493699f0e5762d63

Canadá (Central)

vpce-07e6ed81689d5271f

vpce-0f53239730541394c

Europa (Paris)

vpce-09419680077e6488a

vpce-0ea81ba2c08140c14

Ásia-Pacífico (Osaka)

vpce-0a9f003e6a7e38c05

vpce-02886510b897b1c5a

Europa (Estocolmo)

vpce-0d96410833219025a

vpce-060a32f9a75ba969f

Ásia-Pacífico (Jacarta)

vpce-00add4b9a25e5c649

vpce-004ae2de34338a856

Concessão ao Firehose de acesso a um destino de endpoint de HTTP

É possível usar o Amazon Data Firehose para entregar dados a qualquer destino de endpoint de HTTP. O Amazon Data Firehose também faz backup dos dados no bucket do Amazon S3 especificado, e você tem a opção de usar uma chave do AWS KMS que possua para criptografia no lado do servidor do Amazon S3. Se o registro dos erros em log estiver habilitado, o Amazon Data Firehose enviará os erros de entrega de dados para os fluxos de logs do CloudWatch. Você também pode usar o AWS Lambda para transformação de dados.

Você precisa ter um perfil do IAM ao criar um fluxo do Firehose. O Amazon Data Firehose assume esse perfil do IAM e ganha acesso ao bucket, à chave e aos fluxos e ao grupo de logs do CloudWatch especificados.

Use a política de acesso a seguir para permitir que o Amazon Data Firehose acesse o bucket do S3 especificado para backup de dados. Se você não é o proprietário do bucket do S3, adicione s3:PutObjectAcl à lista de ações do Amazon S3, o que concede ao proprietário do bucket acesso total aos objetos entregues pelo Amazon Data Firehose. Essa política também concede ao Amazon Data Firehose acesso ao CloudWatch para registro dos erros em log, e ao AWS Lambda para transformação de dados. A política também tem uma instrução que permite o acesso ao Amazon Kinesis Data Streams. Se você não usar o Kinesis Data Streams como fonte de dados, poderá remover essa instrução.

Importante

O Amazon Data Firehose não usa o IAM para acessar destinos de endpoints de HTTP de propriedade de provedores de serviços terceirizados com suporte, incluindo o Datadog, o Dynatrace, o LogicMonitor, o MongoDB, o New Relic, o Splunk ou o Sumo Logic. Para acessar um destino de endpoint de HTTP especificado de propriedade de um provedor de serviços terceirizado com suporte, entre em contato com esse provedor de serviços para obter a chave de API ou a chave de acesso necessária para permitir a entrega de dados do Amazon Data Firehose para esse serviço.

Para obter mais informações sobre permitir que outros serviços da AWS acessem os recursos da AWS, consulte Criar um perfil para delegar permissões a um serviço da AWS no Guia do usuário do IAM.

Importante

Atualmente, o Amazon Data Firehose NÃO oferece suporte à entrega de dados a endpoints de HTTP em uma VPC.

Entrega entre contas do Amazon MSK

Quando você está criando um fluxo do Firehose a partir de sua conta do Firehose (por exemplo, Conta B) e sua fonte é um cluster do MSK em outra conta da AWS (Conta A), você deverá ter as configurações a seguir definidas.

Conta A:

  1. No console do Amazon MSK, escolha o cluster provisionado e depois escolha Propriedades.

  2. Em Configurações de rede, escolha Editar e ative a Conectividade de várias VPCs.

  3. Em Configurações de segurança, escolha Editar política do cluster.

    1. Se o cluster ainda não tiver uma política configurada, marque Incluir entidade principal do serviço Firehose e Habilitar a entrega do S3 entre contas do Firehose. O Console de gerenciamento da AWS gerará automaticamente uma política com as permissões apropriadas.

    2. Se o cluster já tiver uma política configurada, adicione as seguintes permissões à política existente:

      { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::us-east-1:role/mskaasTestDeliveryRole" }, "Action": [ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20" // ARN of the cluster }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::us-east-1:role/mskaasTestDeliveryRole" }, "Action": [ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource": "arn:aws:kafka:us-east-1:arn:topic/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*"//topic of the cluster }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::us-east-1:role/mskaasTestDeliveryRole" }, "Action": "kafka-cluster:DescribeGroup", "Resource": "arn:aws:kafka:us-east-1:arn:group/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*" //topic of the cluster }, }
  4. Em Entidade principal da AWS, insira o ID da entidade principal da Conta B.

  5. Em Tópico, especifique o tópico do Apache Kafka do qual você deseja que o fluxo do Firehose faça a ingestão dos dados. Depois que o fluxo do Firehose for criado, você não poderá mais atualizar esse tópico.

  6. Selecione Save changes (Salvar alterações)

Conta B:

  1. No console do Firehose, escolha Criar fluxo do Firehose usando a Conta B.

  2. Em Fonte, escolha Amazon Managed Streaming for Apache.

  3. Em Configurações da fonte, para o cluster do Amazon Managed Streaming for Apache Kafka, insira o ARN do cluster do Amazon MSK na Conta A.

  4. Em Tópico, especifique o tópico do Apache Kafka do qual você deseja que o fluxo do Firehose faça a ingestão dos dados. Depois que o fluxo do Firehose for criado, você não poderá mais atualizar esse tópico.

  5. Em Nome do fluxo de entrega, especifique o nome do seu fluxo do Firehose.

Na Conta B, ao criar o fluxo do Firehose, você deve ter um perfil do IAM (criado por padrão ao usar o Console de gerenciamento da AWS) que conceda ao fluxo do Firehose acesso de "leitura" ao cluster do Amazon MSK entre contas para o tópico configurado.

Veja a seguir o que é configurado pelo Console de gerenciamento da AWS:

{ "Sid": "", "Effect": "Allow", "Action": [ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource": "arn:aws:kafka:us-east-1:arn:aws::cluster/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*" //topic of the cluster }, { "Sid": "", "Effect": "Allow", "Action": [ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource": "arn:aws:kafka:us-east-1:arn:aws::topic/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/mskaas_test_topic" //topic of the cluster }, { "Sid": "", "Effect": "Allow", "Action": [ "kafka-cluster:DescribeGroup" ], "Resource": "arn:aws:kafka:us-east-1:arn:aws::group/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*" //topic of the cluster }, }

Em seguida, é possível concluir a etapa opcional de configuração da transformação de registros e da conversão de formato de registros. Para obter mais informações, consulte (Opcional) Configuração de transformação de registro e conversão de formato.

Entrega entre contas a um destino do Amazon S3

É possível usar a AWS CLI ou as APIs do Amazon Data Firehose para criar um fluxo do Firehose em uma conta da AWS com um destino do Amazon S3 em outra conta. O procedimento a seguir mostra um exemplo de configuração de fluxo do Firehose pertencente à conta para entregar os dados a um bucket do Amazon S3 pertencente à conta B.

  1. Crie um perfil do IAM na conta A usando as etapas descritas em Concessão ao Firehose de acesso a um destino do Amazon S3.

    nota

    O bucket do Amazon S3 especificado na política de acesso padrão pertence à conta B neste caso. Lembre-se de adicionar s3:PutObjectAcl à lista de ações do Amazon S3 na política de acesso padrão, o que concederá à conta B acesso total aos objetos entregues pelo Amazon Data Firehose. Essa permissão é necessária para a entrega entre contas. O Amazon Data Firehose define o cabeçalho "x-amz-acl" na solicitação de "bucket-owner-full-control".

  2. Para permitir o acesso no perfil do IAM criado anteriormente, crie uma política de bucket do S3 na conta B. O código a seguir é um exemplo de política de bucket. Para obter mais informações, consulte Usar políticas de buckets e do usuário.

    JSON
    { "Version":"2012-10-17", "Id": "PolicyID", "Statement": [ { "Sid": "StmtID", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/iam-role-name" }, "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }
  3. Crie um fluxo do Firehose na conta A usando o perfil do IAM criado na etapa 1.

Entrega entre contas a um destino do OpenSearch Service

É possível usar a AWS CLI ou as APIs do Amazon Data Firehose para criar um fluxo do Firehose em uma conta da AWS com um destino do OpenSearch Service em outra conta. O procedimento a seguir mostra um exemplo de como é possível criar um fluxo do Firehose na conta A e configurá-lo para entregar dados em um destino do OpenSearch Service pertencente à conta B.

  1. Criar um perfil do IAM na conta A usando as etapas descritas em Conceder ao Firehose acesso a um destino público do OpenSearch Service.

  2. Para conceder acesso ao perfil do IAM criado na etapa anterior, crie uma política do OpenSearch Service na conta B. O JSON a seguir é um exemplo.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/firehose_delivery_role " }, "Action": "es:ESHttpGet", "Resource": [ "arn:aws:es:us-east-1:123456789012:domain/cross-account-cluster/_all/_settings", "arn:aws:es:us-east-1:123456789012:domain/cross-account-cluster/_cluster/stats", "arn:aws:es:us-east-1:123456789012:domain/cross-account-cluster/roletest*/_mapping/roletest", "arn:aws:es:us-east-1:123456789012:domain/cross-account-cluster/_nodes", "arn:aws:es:us-east-1:123456789012:domain/cross-account-cluster/_nodes/stats", "arn:aws:es:us-east-1:123456789012:domain/cross-account-cluster/_nodes/*/stats", "arn:aws:es:us-east-1:123456789012:domain/cross-account-cluster/_stats", "arn:aws:es:us-east-1:123456789012:domain/cross-account-cluster/roletest*/_stats", "arn:aws:es:us-east-1:123456789012:domain/cross-account-cluster/" ] } ] }
  3. Crie um fluxo do Firehose na conta A usando o perfil do IAM criado na etapa 1. Ao criar o fluxo do Firehose, use a AWS CLI ou as APIs do Amazon Data Firehose e especifique o campo ClusterEndpoint em vez do DomainARN para o OpenSearch Service.

nota

Para criar um fluxo do Firehose em uma conta da AWS com um destino do OpenSearch Service em uma outra conta, você deve usar a AWS CLI ou as APIs do Amazon Data Firehose. Não é possível usar o Console de gerenciamento da AWS para criar esse tipo de configuração entre contas.

Uso de tags para controlar o acesso

É possível usar o elemento opcional Condition (ou bloco de Condition) em uma política do IAM para ajustar o acesso às operações do Amazon Data Firehose com base nas chaves e valores das tags. As subseções a seguir descrevem como fazer isso para as diferentes operações do Amazon Data Firehose. Para saber mais sobre o uso do elemento Condition e as operações que podem ser usadas com ele, consulte Elementos de política JSON do IAM: condição.

CreateDeliveryStream

Para a operação CreateDeliveryStream, use a chave de condição aws:RequestTag. No exemplo a seguir, MyKey e MyValue representam a chave e o valor correspondente de uma tag. Para obter mais informações, consulte . Noções básicas sobre tags

JSON
{ "Version":"2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "firehose:CreateDeliveryStream", "firehose:TagDeliveryStream" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/MyKey": "MyValue" } } }] }

TagDeliveryStream

Para a operação TagDeliveryStream, use a chave de condição aws:TagKeys. No exemplo a seguir, MyKey é um exemplo de chave de tag.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "firehose:TagDeliveryStream", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "MyKey" } } } ] }

UntagDeliveryStream

Para a operação UntagDeliveryStream, use a chave de condição aws:TagKeys. No exemplo a seguir, MyKey é um exemplo de chave de tag.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "firehose:UntagDeliveryStream", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "MyKey" } } } ] }

ListDeliveryStreams

Não é possível usar controle de acesso com base em tags com ListDeliveryStreams.

Outras operações

Para todas as operações do Firehose, exceto CreateDeliveryStream, TagDeliveryStream, UntagDeliveryStream e ListDeliveryStreams, use a chave de condição aws:RequestTag. No exemplo a seguir, MyKey e MyValue representam a chave e o valor correspondente de uma tag.

ListDeliveryStreams, use a chave de condição firehose:ResourceTag para controlar o acesso com base nas tags desse fluxo do Firehose.

No exemplo a seguir, MyKey e MyValue representam a chave e o valor correspondente de uma tag. A política se aplicaria somente aos fluxos do Data Firehose com uma tag de nome MyKey com um valor de MyValue. Para obter mais informações sobre controlar o acesso com base em tags de recurso, consulte Controlar o acesso a recursos da AWS usando tags no Guia do usuário do IAM.