Especificando permissões para aplicativos em execução em instâncias do EC2 - AWS OpsWorks

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

Especificando permissões para aplicativos em execução em instâncias do EC2

Importante

O AWS OpsWorks Stacks não está mais aceitando novos clientes. Os clientes atuais poderão usar o console do OpsWorks, a API, a CLI e os recursos do CloudFormation normalmente até 26 de maio de 2024, quando serão descontinuados. Para se preparar para essa transição, recomendamos que você transfira suas pilhas para o AWS Systems Manager o mais rápido possível. Para obter mais informações, consulte AWS OpsWorks Stacks Perguntas frequentes sobre o fim da vida útil e Como migrar seus aplicativos AWS OpsWorks Stacks para o Application Manager AWS Systems Manager.

Se os aplicativos em execução nas instâncias do Amazon EC2 de sua pilha precisarem acessar outros recursos da AWS, como buckets do Amazon S3, eles devem ter as permissões apropriadas. Para outorgar essas permissões, deve-se utilizar um perfil de instância. Você pode especificar um perfil de instância para cada instância quando criar uma pilha do AWS OpsWorks Stacks.


            Opção Advanced na página Add Stack.

Para especificar um perfil para instâncias de camada, edite as configurações de camada.

O perfil da instância especifica uma função da IAM. Os aplicativos em execução na instância podem assumir essa função para acessar os recursos da AWS, sujeitos a permissões concedidas pela política de atribuição. Para obter mais informações sobre como um aplicativo assume uma função, consulte Assumir a função usando uma chamada de API.

Um perfil de instância pode ser criado em qualquer uma das seguintes formas:

Um perfil de instância deve ter uma relação de confiança e uma política anexada que conceda permissões para acessar os recursos da AWS.

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

O perfil de instância deve ter essa relação de confiança com o AWS OpsWorks Stacks; para atuar em seu nome. Se você usar a função de serviço padrão, não modifique a relação de confiança. Se você estiver criando uma função de serviço personalizado, especifique a relação de confiança como a seguir:

  • Se você estiver usando o assistente Create Role (Criar função) no console do IAM, especifique o tipo de função Amazon EC2 em AWS Service Roles (Funções de serviço da AWS) na segunda página do assistente.

  • Se estiver usando um modelo do AWS CloudFormation, você poderá adicionar um trecho como o seguinte à seção Resources (Recursos) do modelo.

    "Resources": { "OpsWorksEC2Role": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/" } }, "RootInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "OpsWorksEC2Role" } ] } } }

Quando você criar seu perfil de instância, pode-se anexar uma política apropriada para a função do perfil nesse mesmo momento. Depois de criar a pilha, use o console do IAM ou a API para associar uma política apropriada à função do perfil. Por exemplo, a política a seguir concede acesso total a todos os objetos no bucket do Amazon S3 chamado DOC-EXAMPLE-BUCKET. Substitua região e DOC-EXAMPLE-BUCKET por valores apropriados à sua configuração.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:region::DOC-EXAMPLE-BUCKET/*" } ] }

Para obter um exemplo de como criar e usar um perfil de instância, consulte Usar um bucket do Amazon S3.

Caso seu aplicativo use um perfil de instância para chamar a API do AWS OpsWorks Stacks; a partir de uma instância EC2, a política deverá permitir a ação iam:PassRole além das ações apropriadas para o AWS OpsWorks Stacks e outros serviços da AWS. A permissão iam:PassRole autoriza o AWS OpsWorks Stacks; a assumir a função do serviço em seu nome. Para obter mais informações sobre a API do AWS OpsWorks Stacks, consulte Referência da API do AWS OpsWorks.

Veja a seguir um exemplo de uma política do IAM que permite que você chame qualquer ação do AWS OpsWorks Stacks a partir de uma instância do EC2, bem como qualquer ação do Amazon EC2 ou do Amazon S3.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*", "s3:*", "opsworks:*", "iam:PassRole" ], "Resource": "arn:aws:ec2:region:account_id:instance/*", "Condition": { "StringEquals": { "iam:PassedToService": "opsworks.amazonaws.com" } } } ] }
nota

Se você não permitir iam:PassRole, qualquer tentativa de chamar uma ação do AWS OpsWorks Stacks falhará com um erro semelhante ao seguinte:

User: arn:aws:sts::123456789012:federated-user/Bob is not authorized to perform: iam:PassRole on resource: arn:aws:sts::123456789012:role/OpsWorksStackIamRole

Para obter mais informações sobre como usar funções em uma instância do EC2 para permissões, consulte Conceder acesso aos recursos da AWS a aplicativos executados em instâncias do Amazon EC2 no Guia do usuário do AWS Identity and Access Management.