Ejemplos de políticas basadas en identidades de Amazon Elastic Block Store - Amazon EBS

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.

Ejemplos de políticas basadas en identidades de Amazon Elastic Block Store

De forma predeterminada, los usuarios y roles no tienen permiso para crear o modificar los recursos de Amazon EBS. Tampoco pueden realizar tareas mediante la AWS Management Console, la AWS Command Line Interface (AWS CLI) o la API de AWS. Para conceder permiso a los usuarios para realizar acciones en los recursos que necesiten, un administrador de IAM puede crear políticas de IAM. A continuación, el administrador puede agregar las políticas de IAM a los roles y los usuarios pueden asumir esos roles.

Para obtener información acerca de cómo crear una política basada en identidades de IAM mediante el uso de estos documentos de políticas JSON de ejemplo, consulte Creación de políticas de IAM en la Guía del usuario de IAM.

Para obtener más información sobre las acciones y los tipos de recursos definidos por Amazon EBS, incluido el formato de los ARN para cada tipo de recurso, consulte Acciones, recursos y claves de condición para Amazon Elastic Block Store en la Referencia de autorizaciones de servicio.

Prácticas recomendadas sobre las políticas

Las políticas basadas en identidad determinan si alguien puede crear, acceder o eliminar los recursos de Amazon EBS de la cuenta. Estas acciones pueden generar costes adicionales para su Cuenta de AWS. Siga estas directrices y recomendaciones al crear o editar políticas basadas en identidades:

  • Comience con las políticas administradas de AWS y continúe con los permisos de privilegio mínimo: a fin de comenzar a conceder permisos a los usuarios y las cargas de trabajo, utilice las políticas administradas de AWS, que conceden permisos para muchos casos de uso comunes. Están disponibles en su Cuenta de AWS. Se recomienda definir políticas administradas por el cliente de AWS específicas para los casos de uso a fin de reducir aún más los permisos. Con el fin de obtener más información, consulte las políticas administradas por AWS o las políticas administradas por AWS para funciones de trabajo en la Guía del usuario de IAM.

  • Aplique permisos de privilegio mínimo: cuando establezca permisos con políticas de IAM, conceda solo los permisos necesarios para realizar una tarea. Para ello, debe definir las acciones que se pueden llevar a cabo en determinados recursos en condiciones específicas, también conocidos como permisos de privilegios mínimos. Con el fin de obtener más información sobre el uso de IAM para aplicar permisos, consulte Políticas y permisos en IAM en la Guía del usuario de IAM.

  • Utilice condiciones en las políticas de IAM para restringir aún más el acceso: puede agregar una condición a sus políticas para limitar el acceso a las acciones y los recursos. Por ejemplo, puede escribir una condición de políticas para especificar que todas las solicitudes deben enviarse utilizando SSL. También puede usar condiciones para conceder acceso a acciones de servicios si se emplean a través de un Servicio de AWS determinado, como por ejemplo AWS CloudFormation. Para más información, consulte Elementos de política JSON de IAM: condición en la Guía del usuario de IAM.

  • Utilice el analizador de acceso de IAM para validar las políticas de IAM con el fin de garantizar la seguridad y funcionalidad de los permisos: el analizador de acceso de IAM valida políticas nuevas y existentes para que respeten el lenguaje (JSON) de las políticas de IAM y las prácticas recomendadas de IAM. El analizador de acceso de IAM proporciona más de 100 verificaciones de políticas y recomendaciones procesables para ayudar a crear políticas seguras y funcionales. Para más información, consulte Política de validación de Analizador de acceso de IAM en la Guía de usuario de IAM.

  • Solicite la autenticación multifactor (MFA): si se encuentra en una situación en la que necesita usuarios raíz o de IAM en su Cuenta de AWS, active la MFA para mayor seguridad. Para solicitar la MFA cuando se invocan las operaciones de la API, agregue las condiciones de la MFA a sus políticas. Para más información, consulte Configuración del acceso a una API protegido por MFA en la Guía de usuario de IAM.

Para obtener más información sobre las prácticas recomendadas de IAM, consulte las Prácticas recomendadas de seguridad en IAM en la Guía del usuario de IAM.

Uso de la consola de Amazon EBS

Para acceder a la consola de Amazon Elastic Block Store, debe tener un conjunto mínimo de permisos. Estos permisos deben permitirle enumerar y ver los detalles sobre los recursos de Amazon EBS en la Cuenta de AWS. Si crea una política basada en identidades que sea más restrictiva que el mínimo de permisos necesarios, la consola no funcionará del modo esperado para las entidades (usuarios o roles) que tengan esa política.

No es necesario que conceda permisos mínimos para la consola a los usuarios que solo realizan llamadas a la AWS CLI o a la API de AWS. En su lugar, permite acceso únicamente a las acciones que coincidan con la operación de API que intentan realizar.

Para asegurarse de que los usuarios y los roles puedan seguir utilizando la consola de Amazon EBS, asocie también ConsoleAccess de Amazon EBS o la política administrada ReadOnly de AWS a las entidades. Para más información, consulte Adición de permisos a un usuario en la Guía del usuario de IAM:

Cómo permitir a los usuarios consultar sus propios permisos

En este ejemplo, se muestra cómo podría crear una política que permita a los usuarios de IAM ver las políticas administradas e insertadas que se asocian a la identidad de sus usuarios. Esta política incluye permisos para realizar esta acción en la consola o mediante programación con la AWS CLI o la API de AWS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

Trabajar con volúmenes

Ejemplo: Adjuntar y separar volúmenes

Cuando para una acción de una API el intermediario tiene que especificar varios recursos, usted debe crear una instrucción de política que permita a los usuarios obtener acceso a todos los recursos necesarios. Si necesita utilizar un elemento Condition con uno o varios de estos recursos, debe crear varias instrucciones, tal y como se muestra en este ejemplo.

La siguiente política permite a los usuarios adjuntar volúmenes con la etiqueta "volume_user=iam-user-name" a instancias con la etiqueta "department=dev" y separar dichos volúmenes de dichas instancias. Si asocia esta política a un grupo de IAM, la variable de política de aws:username da a cada usuario del grupo permiso para asociar o desasociar volúmenes de las instancias con una etiqueta llamada volume_user que tiene su nombre de usuario como valor.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:us-east-1:account-id:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/department": "dev" } } }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "StringEquals": { "aws:ResourceTag/volume_user": "${aws:username}" } } } ] }

Ejemplo: Crear un volumen

La siguiente política permite a los usuarios utilizar la acción CreateVolume de la API. Se permite al usuario crear un volumen únicamente si este está cifrado y si el tamaño del volumen es inferior a 20 GiB.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateVolume" ], "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition":{ "NumericLessThan": { "ec2:VolumeSize" : "20" }, "Bool":{ "ec2:Encrypted" : "true" } } } ] }

Ejemplo: Crear un volumen con etiquetas

La siguiente política contiene la clave de condición aws:RequestTag que exige a los usuarios que etiqueten todos los volúmenes que creen con las etiquetas costcenter=115 y stack=prod. Si los usuarios no transmiten estas etiquetas en concreto o si no especifican ninguna etiqueta, la solicitud dará un error.

En las acciones de creación de recursos que aplican etiquetas, los usuarios también deben tener permisos para utilizar la acción CreateTags. La segunda instrucción utiliza la clave de condición ec2:CreateAction para permitir a los usuarios crear etiquetas únicamente en el contexto de CreateVolume. Los usuarios no pueden etiquetar volúmenes que ya existen ni otros recursos.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateTaggedVolumes", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "StringEquals": { "aws:RequestTag/costcenter": "115", "aws:RequestTag/stack": "prod" } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "CreateVolume" } } } ] }

La siguiente política permite a los usuarios crear un volumen sin tener que especificar etiquetas. La acción CreateTags solo se evalúa si se especifican etiquetas en la solicitud CreateVolume. Si los usuarios especifican etiquetas, la etiqueta tiene que ser purpose=test. No se permite ninguna otra etiqueta en la solicitud.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "test", "ec2:CreateAction" : "CreateVolume" }, "ForAllValues:StringEquals": { "aws:TagKeys": "purpose" } } } ] }

Por ejemplo: trabajo con volúmenes desde la consola de Amazon EC2

La siguiente política concede a los usuarios permiso para ver y crear volúmenes, además de adjuntar volúmenes a instancias específicas y separarlos de ellas mediante la consola de Amazon EC2.

Los usuarios pueden adjuntar cualquier volumen a instancias que tienen la etiqueta "purpose=test" y también separar volúmenes de dichas instancias. Para adjuntar un volumen mediante la consola de Amazon EC2, es conveniente que los usuarios tengan permiso para utilizar la acción ec2:DescribeInstances, ya que esto les permite seleccionar una instancia en una lista rellenada previamente en el cuadro de diálogo Attach Volume (Asociar volumen). Sin embargo, esto también permite a los usuarios ver todas las instancias de la página Instances (Instancia[s]) de la consola, por lo que puede omitir esta acción.

En la primera instrucción, la acción ec2:DescribeAvailabilityZones es necesaria para garantizar que un usuario pueda seleccionar una zona de disponibilidad al crear un volumen.

Los usuarios no pueden etiquetar los volúmenes que crean (ni durante la creación de volúmenes ni después).

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "ec2:DescribeAvailabilityZones", "ec2:CreateVolume", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:region:111122223333:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "test" } } }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:region:111122223333:volume/*" } ] }

Trabajar con instantáneas

A continuación se incluyen políticas de ejemplo para CreateSnapshot (instantánea de un punto en el tiempo de un volumen de EBS) y CreateSnapshots (instantáneas de varios volúmenes).

Ejemplo: Crear una instantánea

La siguiente política permite a los clientes utilizar la acción CreateSnapshot de la API. El cliente puede crear instantáneas únicamente si este está cifrado y si el tamaño del volumen es inferior a 20 GiB.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*" }, { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1:account-id:volume/*", "Condition":{ "NumericLessThan":{ "ec2:VolumeSize":"20" }, "Bool":{ "ec2:Encrypted":"true" } } } ] }

Ejemplo: Crear instantáneas

La siguiente política permite a los clientes utilizar la acción CreateSnapshots de la API. El cliente puede crear instantáneas solo si todos los volúmenes de la instancia son de tipo GP2.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":[ "arn:aws:ec2:us-east-1::snapshot/*", "arn:aws:ec2:*:*:instance/*" ] }, { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1:*:volume/*", "Condition":{ "StringLikeIfExists":{ "ec2:VolumeType":"gp2" } } } ] }

Ejemplo: Crear una instantánea con etiquetas

La siguiente política incluye la clave de condición aws:RequestTag que exige al cliente aplicar las etiquetas costcenter=115 y stack=prod a cualquier instantánea nueva. Si los usuarios no transmiten estas etiquetas en concreto o si no especifican ninguna etiqueta, la solicitud dará un error.

En las acciones de creación de recursos que aplican etiquetas, los clientes también deben tener permisos para utilizar la acción CreateTags. La tercera instrucción utiliza la clave de condición ec2:CreateAction para permitir a los clientes crear etiquetas únicamente en el contexto de CreateSnapshot. Los clientes no pueden etiquetar volúmenes que ya existen ni otros recursos.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1:account-id:volume/*" }, { "Sid":"AllowCreateTaggedSnapshots", "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/costcenter":"115", "aws:RequestTag/stack":"prod" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "ec2:CreateAction":"CreateSnapshot" } } } ] }

Ejemplo: Creación de instantáneas de varios volúmenes con etiquetas

La siguiente política incluye la clave de condición aws:RequestTag que exige al cliente aplicar las etiquetas costcenter=115 y stack=prod al crear un conjunto de instantáneas de varios volúmenes. Si los usuarios no transmiten estas etiquetas en concreto o si no especifican ninguna etiqueta, la solicitud dará un error.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":[ "arn:aws:ec2:us-east-1::snapshot/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ] }, { "Sid":"AllowCreateTaggedSnapshots", "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/costcenter":"115", "aws:RequestTag/stack":"prod" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "ec2:CreateAction":"CreateSnapshots" } } } ] }

La siguiente política permite a los clientes crear una instantánea sin tener que especificar etiquetas. La acción CreateTags se evalúa solo si se especifican etiquetas en la solicitud CreateSnapshot o CreateSnapshots. Las etiquetas se pueden omitir en la solicitud. Si se especifica una etiqueta, la etiqueta debe ser purpose=test. No se permite ninguna otra etiqueta en la solicitud.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"*" }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/purpose":"test", "ec2:CreateAction":"CreateSnapshot" }, "ForAllValues:StringEquals":{ "aws:TagKeys":"purpose" } } } ] }

La siguiente política permite a los clientes crear conjuntos de instantáneas de varios volúmenes sin tener que especificar etiquetas. La acción CreateTags se evalúa solo si se especifican etiquetas en la solicitud CreateSnapshot o CreateSnapshots. Las etiquetas se pueden omitir en la solicitud. Si se especifica una etiqueta, la etiqueta debe ser purpose=test. No se permite ninguna otra etiqueta en la solicitud.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"*" }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/purpose":"test", "ec2:CreateAction":"CreateSnapshots" }, "ForAllValues:StringEquals":{ "aws:TagKeys":"purpose" } } } ] }

La siguiente política permite crear instantáneas solo si el volumen de origen se etiqueta con User:username para el cliente y la propia instantánea se etiqueta con Environment:Dev y User:username. El cliente puede añadir etiquetas adicionales a la instantánea.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1:account-id:volume/*", "Condition":{ "StringEquals":{ "aws:ResourceTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/Environment":"Dev", "aws:RequestTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*" } ] }

La siguiente política de CreateSnapshots permite crear instantáneas solo si el volumen de origen se etiqueta con User:username para el cliente y la propia instantánea se etiqueta con Environment:Dev y User:username.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1:*:instance/*", }, { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1:account-id:volume/*", "Condition":{ "StringEquals":{ "aws:ResourceTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/Environment":"Dev", "aws:RequestTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*" } ] }

La siguiente política permite la eliminación de una instantánea solo si la instantánea está etiquetada con User:nombre de usuario para el cliente.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:DeleteSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:ResourceTag/User":"${aws:username}" } } } ] }

La siguiente política permite a un cliente crear una instantánea, pero deniega la acción si la instantánea que se está creando tiene una clave de etiqueta value=stack.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":[ "ec2:CreateSnapshot", "ec2:CreateTags" ], "Resource":"*" }, { "Effect":"Deny", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "ForAnyValue:StringEquals":{ "aws:TagKeys":"stack" } } } ] }

La siguiente política permite a un cliente crear instantáneas, pero deniega la acción si las instantáneas que se están creando tienen una clave de etiqueta value=stack.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":[ "ec2:CreateSnapshots", "ec2:CreateTags" ], "Resource":"*" }, { "Effect":"Deny", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "ForAnyValue:StringEquals":{ "aws:TagKeys":"stack" } } } ] }

La siguiente política le permite combinar varias acciones en una sola política. Solo puede crear una instantánea (en el contexto de CreateSnapshots) cuando la instantánea se crea en la región us-east-1. Solo puede crear instantáneas (en el contexto de CreateSnapshots) cuando las instantáneas se crean en la región us-east-1 y cuando el tipo de instancia es t2*.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":[ "ec2:CreateSnapshots", "ec2:CreateSnapshot", "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:snapshot/*", "arn:aws:ec2:*:*:volume/*" ], "Condition":{ "StringEqualsIgnoreCase": { "ec2:Region": "us-east-1" }, "StringLikeIfExists": { "ec2:InstanceType": ["t2.*"] } } } ] }

Ejemplo: Copia de instantáneas

Los permisos de nivel de recursos especificados para la acción CopySnapshot sólo se aplican a la nueva instantánea. No se pueden especificar para la instantánea de origen.

La siguiente política de ejemplo permite a las entidades copiar instantáneas sólo si la nueva instantánea se crea con la clave de etiqueta de purpose y un valor de etiqueta de production (purpose=production).

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCopySnapshotWithTags", "Effect": "Allow", "Action": "ec2:CopySnapshot", "Resource": "arn:aws:ec2:*:account-id:snapshot/*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "production" } } } ] }

Ejemplo: Modificar la configuración de permisos de las instantáneas

La siguiente política permite la modificación de una instantánea solo si la instantánea está etiquetada con User:username, donde username es el nombre de usuario de la cuenta de AWS del cliente. La solicitud falla si no se cumple esta condición.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:ModifySnapshotAttribute", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:ResourceTag/user-name":"${aws:username}" } } } ] }