Política de control de acceso - AWS SDK for Java 1.x

Anunciamos la próxima versión end-of-support para AWS SDK for Java (v1). Se recomienda que migre a AWS SDK for Java versión 2. Para ver las fechas, los detalles adicionales y la información sobre cómo realizar la migración, consulte el anuncio enlazado.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Política de control de acceso

AWS las políticas de control de acceso le permiten especificar controles de acceso detallados en sus recursos. AWS Una política de control de acceso se compone de un conjunto de instrucciones, con el siguiente formato:

La cuenta A tiene permiso para realizar la acción B en el recurso C donde se aplica la condición D.

Donde:

  • A es el principal: el Cuenta de AWS que solicita el acceso o la modificación de uno de sus recursos. AWS

  • B es la acción: la forma en que se accede a un AWS recurso o se lo modifica, por ejemplo, enviando un mensaje a una Amazon SQS cola o almacenando un objeto en un Amazon S3 depósito.

  • C es el recurso: la AWS entidad a la que el principal quiere acceder, como una Amazon SQS cola o un objeto almacenado. Amazon S3

  • D es un conjunto de condiciones: las limitaciones opcionales que se especifican para permitir o denegar el acceso al recurso de la entidad principal. Hay muchas condiciones expresivas disponibles, algunas específicas de cada servicio. Por ejemplo, puede utilizar condiciones de fecha para permitir el acceso a los recursos únicamente después o antes de un momento específico.

Amazon S3 Ejemplo

El siguiente ejemplo muestra una política que permite a cualquier persona acceder a leer todos los objetos de un depósito, pero restringe el acceso a la carga de objetos a ese depósito a dos personas específicas Cuenta de AWS(además de la cuenta del propietario del depósito).

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 Ejemplo

Un uso común de las políticas es autorizar una Amazon SQS cola para recibir mensajes de un tema de 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));

Ejemplo de Amazon SNS

Algunos servicios ofrecen condiciones adicionales que pueden utilizarse en las políticas. Amazon SNS establece condiciones para permitir o denegar suscripciones a temas de SNS según el protocolo (por ejemplo, correo electrónico, HTTP, HTTPS Amazon SQS) y el punto final (por ejemplo, dirección de correo electrónico, URL, Amazon SQS ARN) de la solicitud de suscripción a un tema.

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()));