Políticas de controle de acesso - AWS SDK for Java 1.x

Anunciamos o próximo end-of-support para AWS SDK for Java (v1). Recomendamos migrar para o AWS SDK for Java v2. Para saber as datas e receber detalhes adicionais e informações sobre como migrar, consulte o anúncio vinculado.

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

Políticas de controle de acesso

AWS as políticas de controle de acesso permitem que você especifique controles de acesso refinados em seus recursos. AWS Uma política de controle de acesso consiste em um conjunto de instruções, que assumem a forma:

A conta A tem permissão para realizar a ação B no recurso C em que a condição D se aplica.

Em que:

  • A é o principal - Conta da AWS Aquele que está fazendo uma solicitação para acessar ou modificar um de seus AWS recursos.

  • B é a ação: a maneira pela qual seu AWS recurso está sendo acessado ou modificado, como enviar uma mensagem para uma Amazon SQS fila ou armazenar um objeto em um Amazon S3 bucket.

  • C é o recurso - A AWS entidade que o principal deseja acessar, como uma Amazon SQS fila ou um objeto armazenado Amazon S3.

  • D é um conjunto de condições: as restrições opcionais que especificam quando permitir ou negar acesso para a entidade principal acessar o recurso. Muitas condições expressivas estão disponíveis, algumas específicas de cada serviço. Por exemplo, você pode usar condições de data para permitir acesso aos recursos somente depois ou antes de uma hora específica.

Amazon S3 Exemplo

O exemplo a seguir demonstra uma política que permite que qualquer pessoa acesse para ler todos os objetos em um bucket, mas restringe o acesso ao upload de objetos nesse bucket a dois Conta da AWS s específicos (além da conta do proprietário do bucket).

Statement allowPublicReadStatement = new Statement(Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(S3Actions.GetObject) .withResources(new S3ObjectResource(myBucketName, "*")); Statement allowRestrictedWriteStatement = new Statement(Effect.Allow) .withPrincipals(new Principal("123456789"), new Principal("876543210")) .withActions(S3Actions.PutObject) .withResources(new S3ObjectResource(myBucketName, "*")); Policy policy = new Policy() .withStatements(allowPublicReadStatement, allowRestrictedWriteStatement); AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); s3.setBucketPolicy(myBucketName, policy.toJson());

Amazon SQS Exemplo

Um uso comum das políticas é autorizar uma Amazon SQS fila para receber mensagens de um tópico do Amazon SNS.

Policy policy = new Policy().withStatements( new Statement(Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(SQSActions.SendMessage) .withConditions(ConditionFactory.newSourceArnCondition(myTopicArn))); Map queueAttributes = new HashMap(); queueAttributes.put(QueueAttributeName.Policy.toString(), policy.toJson()); AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); sqs.setQueueAttributes(new SetQueueAttributesRequest(myQueueUrl, queueAttributes));

Exemplo do Amazon SNS

Alguns serviços oferecem condições adicionais que podem ser usadas em políticas. O Amazon SNS fornece condições para permitir ou negar assinaturas de tópicos do SNS com base no protocolo (por exemplo, e-mail, HTTP, HTTPS Amazon SQS) e no endpoint (por exemplo, endereço de e-mail, URL, Amazon SQS ARN) da solicitação de assinatura de um tópico.

Condition endpointCondition = SNSConditionFactory.newEndpointCondition("*@mycompany.com"); Policy policy = new Policy().withStatements( new Statement(Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(SNSActions.Subscribe) .withConditions(endpointCondition)); AmazonSNS sns = AmazonSNSClientBuilder.defaultClient(); sns.setTopicAttributes( new SetTopicAttributesRequest(myTopicArn, "Policy", policy.toJson()));