Políticas de ejemplo basadas en permisos de recursos - AWS Elastic Beanstalk

Políticas de ejemplo basadas en permisos de recursos

En esta sección se describe un caso de uso para controlar los permisos de usuario para acciones de Elastic Beanstalk que acceden a recursos específicos de Elastic Beanstalk. Examinaremos las políticas de ejemplo que permiten este caso de uso. Para obtener más información sobre las directivas sobre los recursos de Elastic Beanstalk, consulte Creación de una política de usuario personalizada. Para obtener información sobre cómo asociar políticas a usuarios y grupos, consulte Administración de políticas de IAM en Uso de AWS Identity and Access Management.

En nuestro caso de uso, Example Corp. es una pequeña empresa de consultoría que desarrolla aplicaciones para dos clientes diferentes. John es el director de desarrollo que supervisa el desarrollo de las dos aplicaciones de Elastic Beanstalk: app1 y app2. John realiza tareas de desarrollo y pruebas en las dos aplicaciones y solo él puede actualizar el entorno de producción de las dos aplicaciones. Estos son los permisos que necesita para app1 y app2:

  • Ver aplicaciones, versiones de aplicaciones, entornos y plantillas de configuración

  • Creación de versiones de la aplicación e implementarlas en el entorno de ensayo

  • Actualización de el entorno de producción

  • Creación de y terminar entornos

Jill es un evaluador que necesita tener acceso para ver los siguientes recursos con el fin de poder supervisar y probar las dos aplicaciones: aplicaciones, versiones de la aplicación, entornos y plantillas de configuración. Sin embargo, no debería poder hacer cambios en ningún recurso de Elastic Beanstalk.

Jack es el desarrollador de app1 que necesita acceso para ver todos los recursos de app1, y también debe crear versiones de la aplicación para app1 e implementarlas en el entorno de ensayo.

Judy es la administradora de la cuenta de AWS de Example Corp. Ha creado usuarios de IAM para John, Jill y Jack, y ha asociado las siguientes políticas a esos usuarios para conceder los permisos correspondientes a las aplicaciones app1 y app2.

Ejemplo 1: John: jefe de desarrollo de app1, app2

Hemos dividido la política de John en tres políticas distintas para que sean más fáciles de leer y administrar. Juntos, conceden a John los permisos que necesita para realizar acciones de desarrollo, pruebas e implementación en las dos aplicaciones.

La primera política especifica acciones para Auto Scaling, Amazon S3, Amazon EC2, CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS y CloudFormation. Elastic Beanstalk utiliza estos servicios adicionales para aprovisionar los recursos subyacentes cuando se crea un entorno.

Tenga en cuenta que esta política es un ejemplo. Concede un amplio conjunto de permisos a los productos de AWS que Elastic Beanstalk utiliza para administrar aplicaciones y entornos. Por ejemplo, ec2:* permite a un usuario de IAM realizar cualquier acción en cualquier recurso de Amazon EC2 en la cuenta de AWS. Estos permisos no se limitan a los recursos que utiliza con Elastic Beanstalk. Como práctica recomendada, debe conceder a las personas únicamente los permisos necesarios para llevar a cabo sus tareas.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*", "ecs:*", "ecr:*", "elasticloadbalancing:*", "autoscaling:*", "cloudwatch:*", "s3:*", "sns:*", "cloudformation:*", "dynamodb:*", "rds:*", "sqs:*", "logs:*", "iam:GetPolicyVersion", "iam:GetRole", "iam:ListRolePolicies", "iam:ListAttachedRolePolicies", "iam:ListInstanceProfiles", "iam:ListRoles", "iam:ListServerCertificates", "acm:DescribeCertificate", "acm:ListCertificates", "codebuild:CreateProject", "codebuild:DeleteProject", "codebuild:BatchGetBuilds", "codebuild:StartBuild" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::111122223333:role/MyRole" } ] }

La segunda política especifica las acciones de Elastic Beanstalk que John puede realizar en los recursos de app1 y app2. La instrucción AllCallsInApplications permite que se realicen todas las acciones de Elastic Beanstalk ("elasticbeanstalk:*") en todos los recursos de app1 y app2 (por ejemplo, elasticbeanstalk:CreateEnvironment). La instrucción AllCallsOnApplications permite que se realicen todas las acciones de Elastic Beanstalk ("elasticbeanstalk:*") en todos los recursos de las aplicaciones app1 y app2 (por ejemplo, elasticbeanstalk:DescribeApplications, elasticbeanstalk:UpdateApplication, etc.). La instrucción AllCallsOnSolutionStacks permite todas las acciones de Elastic Beanstalk ("elasticbeanstalk:*") para los recursos de la pila de soluciones (por ejemplo, elasticbeanstalk:ListAvailableSolutionStacks.

JSON
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllCallsInApplications", "Action":[ "elasticbeanstalk:*" ], "Effect":"Allow", "Resource":[ "*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] } } }, { "Sid":"AllCallsOnApplications", "Action":[ "elasticbeanstalk:*" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] }, { "Sid":"AllCallsOnSolutionStacks", "Action":[ "elasticbeanstalk:*" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*" ] } ] }

La tercera directiva especifica las acciones de Elastic Beanstalk en las que la segunda política necesita permisos para completar esas acciones de Elastic Beanstalk. La instrucción AllNonResourceCalls permite la acción elasticbeanstalk:CheckDNSAvailability, que es necesaria para llamar a elasticbeanstalk:CreateEnvironment y para otras acciones. También permite la acción elasticbeanstalk:CreateStorageLocation, que es necesaria para elasticbeanstalk:CreateApplication, elasticbeanstalk:CreateEnvironment y para otras acciones.

JSON
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllNonResourceCalls", "Action":[ "elasticbeanstalk:CheckDNSAvailability", "elasticbeanstalk:CreateStorageLocation" ], "Effect":"Allow", "Resource":[ "*" ] } ] }

Ejemplo 2: Jill: evaluadora de app1, app2

Hemos dividido la política de Jill en tres políticas distintas para que sean más fáciles de leer y administrar. Juntos, conceden a Jill los permisos que necesita para las acciones de pruebas y supervisión en las dos aplicaciones.

La primera política especifica las acciones Describe*, List* y Get* en Auto Scaling, Amazon S3, Amazon EC2, CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS y CloudFormation (para tipos de contenedores no heredados), lo que permite que las acciones de Elastic Beanstalk puedan recuperar la información pertinente sobre los recursos subyacentes de las aplicaciones app1 y app2.

JSON
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ec2:Describe*", "elasticloadbalancing:Describe*", "autoscaling:Describe*", "cloudwatch:Describe*", "cloudwatch:List*", "cloudwatch:Get*", "s3:Get*", "s3:List*", "sns:Get*", "sns:List*", "rds:Describe*", "cloudformation:Describe*", "cloudformation:Get*", "cloudformation:List*", "cloudformation:Validate*", "cloudformation:Estimate*" ], "Resource":"*" } ] }

La segunda política especifica las acciones de Elastic Beanstalk que Jill puede realizar en los recursos de app1 y app2. La instrucción AllReadCallsInApplications le permite llamar a las acciones Describe* y a las acciones de información del entorno. La instrucción AllReadCallsOnApplications le permite llamar a las acciones DescribeApplications y DescribeEvents en los recursos de las aplicaciones app1 y app2. La instrucción AllReadCallsOnSolutionStacks le permite ver las acciones en las que participan los recursos de la pila de soluciones (ListAvailableSolutionStacks, DescribeConfigurationOptions y ValidateConfigurationSettings).

JSON
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllReadCallsInApplications", "Action":[ "elasticbeanstalk:Describe*", "elasticbeanstalk:RequestEnvironmentInfo", "elasticbeanstalk:RetrieveEnvironmentInfo" ], "Effect":"Allow", "Resource":[ "*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] } } }, { "Sid":"AllReadCallsOnApplications", "Action":[ "elasticbeanstalk:DescribeApplications", "elasticbeanstalk:DescribeEvents" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] }, { "Sid":"AllReadCallsOnSolutionStacks", "Action":[ "elasticbeanstalk:ListAvailableSolutionStacks", "elasticbeanstalk:DescribeConfigurationOptions", "elasticbeanstalk:ValidateConfigurationSettings" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*" ] } ] }

La tercera directiva especifica las acciones de Elastic Beanstalk en las que la segunda política necesita permisos para completar esas acciones de Elastic Beanstalk. La instrucción AllNonResourceCalls permite la acción elasticbeanstalk:CheckDNSAvailability, que es necesaria para algunas acciones de consulta.

JSON
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllNonResourceCalls", "Action":[ "elasticbeanstalk:CheckDNSAvailability" ], "Effect":"Allow", "Resource":[ "*" ] } ] }

Ejemplo 3: Jack: desarrollador de app1

Hemos dividido la política de Jack en tres políticas distintas para que sean más fáciles de leer y administrar. Juntos, conceden a Jack los permisos que necesita para realizar acciones de pruebas, supervisión e implementación en el recurso app1.

La primera política especifica las acciones de Auto Scaling, Amazon S3, Amazon EC2, CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS y CloudFormation (para tipos de contenedores no heredados), lo que permite que las acciones de Elastic Beanstalk puedan recuperar la información pertinente sobre los recursos subyacentes de las aplicaciones app1. Para ver una lista de los tipos de contenedores no heredados admitidos, consulte ¿Por qué algunas versiones de la plataforma están marcadas como heredadas?

Tenga en cuenta que esta política es un ejemplo. Concede un amplio conjunto de permisos a los productos de AWS que Elastic Beanstalk utiliza para administrar aplicaciones y entornos. Por ejemplo, ec2:* permite a un usuario de IAM realizar cualquier acción en cualquier recurso de Amazon EC2 en la cuenta de AWS. Estos permisos no se limitan a los recursos que utiliza con Elastic Beanstalk. Como práctica recomendada, debe conceder a las personas únicamente los permisos necesarios para llevar a cabo sus tareas.

JSON
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ec2:*", "elasticloadbalancing:*", "autoscaling:*", "cloudwatch:*", "s3:*", "sns:*", "rds:*", "cloudformation:*" ], "Resource":"*" } ] }

La segunda política especifica las acciones de Elastic Beanstalk que Jack puede realizar en el recurso de app1.

JSON
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllReadCallsAndAllVersionCallsInApplications", "Action":[ "elasticbeanstalk:Describe*", "elasticbeanstalk:RequestEnvironmentInfo", "elasticbeanstalk:RetrieveEnvironmentInfo", "elasticbeanstalk:CreateApplicationVersion", "elasticbeanstalk:DeleteApplicationVersion", "elasticbeanstalk:UpdateApplicationVersion" ], "Effect":"Allow", "Resource":[ "*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1" ] } } }, { "Sid":"AllReadCallsOnApplications", "Action":[ "elasticbeanstalk:DescribeApplications", "elasticbeanstalk:DescribeEvents" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1" ] }, { "Sid":"UpdateEnvironmentInApplications", "Action":[ "elasticbeanstalk:UpdateEnvironment" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/app1/app1-staging*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1" ] }, "ArnLike":{ "elasticbeanstalk:FromApplicationVersion":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/app1/*" ] } } }, { "Sid":"AllReadCallsOnSolutionStacks", "Action":[ "elasticbeanstalk:ListAvailableSolutionStacks", "elasticbeanstalk:DescribeConfigurationOptions", "elasticbeanstalk:ValidateConfigurationSettings" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*" ] } ] }

La tercera directiva especifica las acciones de Elastic Beanstalk en las que la segunda política necesita permisos para completar esas acciones de Elastic Beanstalk. La instrucción AllNonResourceCalls permite la acción elasticbeanstalk:CheckDNSAvailability, que es necesaria para llamar a elasticbeanstalk:CreateEnvironment y para otras acciones. También permite la acción elasticbeanstalk:CreateStorageLocation, que es necesaria para elasticbeanstalk:CreateEnvironment y para otras acciones.

JSON
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllNonResourceCalls", "Action":[ "elasticbeanstalk:CheckDNSAvailability", "elasticbeanstalk:CreateStorageLocation" ], "Effect":"Allow", "Resource":[ "*" ] } ] }