Funções do IAM para o AWS Data Pipeline - AWS Data Pipeline

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

Funções do IAM para o AWS Data Pipeline

AWS Data Pipeline usa funções de AWS Identity and Access Management. As políticas de permissões associadas ao perfil do IAM determinam quais ações AWS Data Pipeline e seus aplicativos podem realizar e quais recursos de AWS eles podem acessar. Para obter mais informações, consulte Funções do IAM no Guia do usuário do IAM.

AWS Data Pipeline requer dois perfis do IAM:

  • O perfil do pipeline controla o AWS Data Pipeline acesso aos recursos da AWS. Nas definições de objetos de pipeline, o campo role especifica essa função.

  • O perfil de instância do EC2 controla o acesso que os aplicativos executados nas instâncias do EC2, incluindo as instâncias do EC2 nos clusters do Amazon EMR, têm aos recursos de AWS. Nas definições de objetos de pipeline, o campo resourceRole especifica essa função.

Importante

Se você criou um pipeline antes de 3 de outubro de 2022 usando o console do AWS Data Pipeline com funções padrão, AWS Data Pipeline criou o DataPipelineDefaultRole para você e anexou a política gerenciada pelo AWSDataPipelineRole à função. A partir de 3 de outubro de 2022, a política gerenciada pelo AWSDataPipelineRole foi descontinuada e a função do pipeline deve ser especificada para um pipeline ao usar o console.

Recomendamos que você analise os pipelines existentes e determine se DataPipelineDefaultRole está associado ao pipeline e se AWSDataPipelineRole está associado a essa função. Nesse caso, revise o acesso que essa política permite para garantir que ela seja adequada aos seus requisitos de segurança. Adicione, atualize ou substitua as políticas e declarações de política anexadas a essa função, conforme necessário. Como alternativa, você pode atualizar um pipeline para usar uma função criada com diferentes políticas de permissões.

Exemplo de políticas de permissões para funções de AWS Data Pipeline

Cada função tem uma ou mais políticas de permissões anexadas que determinam os recursos de AWS que a função pode acessar e as ações que a função pode realizar. Este tópico fornece um exemplo de política de permissões para a função de pipeline. Ele também fornece o conteúdo da AmazonEC2RoleforDataPipelineRole, que é a política gerenciada para a função de instância padrão do EC2, DataPipelineDefaultResourceRole.

Exemplo de política de permissões da função de pipeline

O exemplo de política a seguir tem como escopo permitir funções essenciais que AWS Data Pipeline exigem para executar um pipeline com recursos do Amazon EC2 e do Amazon EMR. Ele também fornece permissões para acessar outros recursos de AWS, como o Amazon Simple Storage Service e o Amazon Simple Notification Service, que muitos pipelines exigem. Se os objetos definidos em um pipeline não exigirem os recursos de um serviço de AWS, recomendamos que você remova as permissões para acessar esse serviço. Por exemplo, se seu pipeline não definir um DynamoDB DataNode ou usar a ação SnsAlarm, recomendamos que você remova as instruções de permissão para essas ações.

  • Substitua 111122223333 pelo ID de sua conta da AWS.

  • Substitua NameOfDataPipelineRole pelo nome da função do pipeline (a função à qual essa política está anexada).

  • Substitua NameOfDataPipelineResourceRole pelo nome da função da instância EC2.

  • Substitua us-west-1 pela região apropriada para sua aplicação.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:GetInstanceProfile", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListRolePolicies", "iam:PassRole" ], "Resource": [ "arn:aws:iam::111122223333:role/NameOfDataPipelineRole", "arn:aws:iam::111122223333 :role/NameOfDataPipelineResourceRole" ] }, { "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CancelSpotInstanceRequests", "ec2:CreateNetworkInterface", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteNetworkInterface", "ec2:DeleteSecurityGroup", "ec2:DeleteTags", "ec2:DescribeAvailabilityZones", "ec2:DescribeAccountAttributes", "ec2:DescribeDhcpOptions", "ec2:DescribeImages", "ec2:DescribeInstanceStatus", "ec2:DescribeInstances", "ec2:DescribeKeyPairs", "ec2:DescribeLaunchTemplates", "ec2:DescribeNetworkAcls", "ec2:DescribeNetworkInterfaces", "ec2:DescribePrefixLists", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSpotInstanceRequests", "ec2:DescribeSpotPriceHistory", "ec2:DescribeSubnets", "ec2:DescribeTags", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcEndpointServices", "ec2:DescribeVpcs", "ec2:DetachNetworkInterface", "ec2:ModifyImageAttribute", "ec2:ModifyInstanceAttribute", "ec2:RequestSpotInstances", "ec2:RevokeSecurityGroupEgress", "ec2:RunInstances", "ec2:TerminateInstances", "ec2:DescribeVolumeStatus", "ec2:DescribeVolumes", "elasticmapreduce:TerminateJobFlows", "elasticmapreduce:ListSteps", "elasticmapreduce:ListClusters", "elasticmapreduce:RunJobFlow", "elasticmapreduce:DescribeCluster", "elasticmapreduce:AddTags", "elasticmapreduce:RemoveTags", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ModifyInstanceGroups", "elasticmapreduce:GetCluster", "elasticmapreduce:DescribeStep", "elasticmapreduce:AddJobFlowSteps", "elasticmapreduce:ListInstances", "iam:ListInstanceProfiles", "redshift:DescribeClusters" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "sns:GetTopicAttributes", "sns:Publish" ], "Resource": [ "arn:aws:sns:us-west-1:111122223333:MyFirstSNSTopic", "arn:aws:sns:us-west-1:111122223333:MySecondSNSTopic", "arn:aws:sns:us-west-1:111122223333:AnotherSNSTopic" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:ListMultipartUploads" ], "Resource": [ "arn:aws:s3:::MyStagingS3Bucket", "arn:aws:s3:::MyLogsS3Bucket", "arn:aws:s3:::MyInputS3Bucket", "arn:aws:s3:::MyOutputS3Bucket", "arn:aws:s3:::AnotherRequiredS3Buckets" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectMetadata", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::MyStagingS3Bucket/*", "arn:aws:s3:::MyLogsS3Bucket/*", "arn:aws:s3:::MyInputS3Bucket/*", "arn:aws:s3:::MyOutputS3Bucket/*", "arn:aws:s3:::AnotherRequiredS3Buckets/*" ] }, { "Effect": "Allow", "Action": [ "dynamodb:Scan", "dynamodb:DescribeTable" ], "Resource": [ "arn:aws:dynamodb:us-west-1:111122223333:table/MyFirstDynamoDBTable", "arn:aws:dynamodb:us-west-1:111122223333:table/MySecondDynamoDBTable", "arn:aws:dynamodb:us-west-1:111122223333:table/AnotherDynamoDBTable" ] }, { "Effect": "Allow", "Action": [ "rds:DescribeDBInstances" ], "Resource": [ "arn:aws:rds:us-west-1:111122223333:db:MyFirstRdsDb", "arn:aws:rds:us-west-1:111122223333:db:MySecondRdsDb", "arn:aws:rds:us-west-1:111122223333:db:AnotherRdsDb" ] } ] }

Política gerenciada padrão para a função de instância do EC2

O conteúdo de AmazonEC2RoleforDataPipelineRole é mostrado abaixo. Essa é a política gerenciada anexada à função de recurso padrão para AWS Data Pipeline e DataPipelineDefaultResourceRole. Ao definir uma função de recurso para seu pipeline, recomendamos que você comece com essa política de permissões e, em seguida, remova as permissões para ações de serviço de AWS que não são necessárias.

É exibida a versão 3 da política, que é a versão mais recente no momento da preparação deste artigo. Veja a versão mais recente da política usando o console do IAM.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "cloudwatch:*", "datapipeline:*", "dynamodb:*", "ec2:Describe*", "elasticmapreduce:AddJobFlowSteps", "elasticmapreduce:Describe*", "elasticmapreduce:ListInstance*", "elasticmapreduce:ModifyInstanceGroups", "rds:Describe*", "redshift:DescribeClusters", "redshift:DescribeClusterSecurityGroups", "s3:*", "sdb:*", "sns:*", "sqs:*" ], "Resource": ["*"] }] }

Criar perfis de IAM para AWS Data Pipeline e editar as permissões de função

Use o procedimento a seguir para criar uma função para AWS Data Pipeline usando o console do IAM. O processo consiste em duas etapas. Primeiro, você deve criar uma política de permissões para anexar à função. Em seguida, crie uma função e anexe a política a ela. Depois de criar uma função, você pode alterar as permissões da função ao anexar e desanexar políticas de permissões.

nota

Quando você cria funções para AWS Data Pipeline usar o console conforme descrito abaixo, o IAM cria e anexa as políticas de confiança adequadas que a função exige.

Para criar uma política de permissões para usar com uma função para AWS Data Pipeline
  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, escolha Políticas e, em seguida, Criar política.

  3. Escolha a guia JSON.

  4. Se você estiver criando uma função de pipeline, copie e cole o conteúdo do exemplo de política em Exemplo de política de permissões da função de pipeline, editando-o conforme apropriado para seus requisitos de segurança. Como alternativa, se você estiver criando uma função de instância de EC2 personalizada, faça o mesmo com o exemplo em Política gerenciada padrão para a função de instância do EC2.

  5. Escolha Review policy (Revisar política).

  6. Insira um nome e uma descrição opcional, como, por exemplo, MyDataPipelineRolePolicy, e uma Descrição opcional e, então, selecione Criar política.

  7. Anote o nome da política. Você precisa dele ao criar a função.

Para criar uma função do IAM para o AWS Data Pipeline
  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, selecione Funções e, então, selecione Criar função.

  3. Em Selecione um caso de uso, selecione Pipeline de dados.

  4. Em Selecione seu caso de uso, siga um destes procedimentos:

    • Selecione Data Pipeline para criar uma função de pipeline.

    • Selecione EC2 Role for Data Pipeline para criar uma função de recurso.

  5. Escolha Next: Permissions (Próximo: permissões).

  6. Se a política padrão para AWS Data Pipeline estiver listada, siga as etapas a seguir para criar a função e editá-la de acordo com as instruções do próximo procedimento. Caso contrário, insira o nome da política que você criou no procedimento acima e selecione-o na lista.

  7. Selecione Próximo: Tags, insira as tags a serem adicionadas à função e selecione Próximo: Revisão.

  8. Insira um nome para a função, como, por exemplo, MyDataPipelineRole, e uma Descrição opcional e, em seguida, selecione Criar função.

Para anexar ou desanexar uma política de permissões para um perfil do IAM para AWS Data Pipeline
  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, escolha Funções

  3. Na caixa de pesquisa, digite o nome da função que você deseja editar, como, por exemplo, DataPipelineDefaultRole ou MyDataPipelineRole e, então, selecione o Nome da função na lista.

  4. Na guia Permissões, faça o seguinte:

    • Para desanexar uma política de permissões, em Políticas de permissões, selecione o botão remover na extremidade direita da entrada da política. Selecione Desanexar quando solicitado para confirmar.

    • Para anexar uma política que você criou anteriormente, selecione Anexar políticas. Na caixa de pesquisa, digite o nome da política que você deseja editar, selecione-o na lista e selecione Anexar política.

Alterar as funções de um pipeline existente

Se você quiser atribuir uma função de pipeline ou função de recurso diferente a um pipeline, você pode usar o editor de arquitetura no console do AWS Data Pipeline.

Para editar as funções atribuídas a um pipeline usando o console
  1. Abra o console do AWS Data Pipeline em https://console.aws.amazon.com/datapipeline/.

  2. Selecione o pipeline na lista e selecione Ações, Editar.

  3. No painel direito do editor de arquitetura, selecione Outros.

  4. Nas listas Função do Recurso e Função, selecione as funções para AWS Data Pipeline que você deseja atribuir e selecione Salvar.