Ejemplos de políticas basadas en identidades para Amazon CloudFront - Amazon CloudFront

Ejemplos de políticas basadas en identidades para Amazon CloudFront

De forma predeterminada, los usuarios y roles no tienen permiso para crear o modificar recursos de CloudFront. Tampoco pueden realizar tareas mediante la AWS Management Console, la AWS Command Line Interface (AWS CLI) o la API de AWS. Un administrador de IAM puede crear políticas de IAM para conceder permisos a los usuarios para realizar acciones en los recursos que necesitan. A continuación, el administrador puede añadir las políticas de IAM a roles y los usuarios pueden asumirlos.

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 CloudFront, incluido el formato de los ARN para cada tipo de recurso, consulte Acciones, recursos y claves de condición de Amazon CloudFront en la Referencia de autorizaciones de servicio.

Prácticas recomendadas sobre las políticas

Las políticas basadas en identidades determinan si alguien puede crear, eliminar o acceder a los recursos de CloudFront de la cuenta. Estas acciones pueden generar costos 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 por AWSy 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 por 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 sus 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 de 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 obtener más información, consulte Elementos de la política de 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.

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 llevar a cabo 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": "*" } ] }

Permisos para acceder a CloudFront mediante programación

A continuación se muestra una política de permisos. El Sid o ID de instrucción es opcional.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAllCloudFrontPermissions", "Effect": "Allow", "Action": ["cloudfront:*"], "Resource": "*" } ] }

La política concede permisos para realizar todas las operaciones de CloudFront, que son suficientes para acceder a CloudFront mediante programación. Si utiliza la consola para acceder a CloudFront, consulte Permisos necesarios para utilizar la consola de CloudFront.

Para consultar una lista de acciones y el ARN a especificar para conceder o denegar permisos para ejecutar cada acción, consulte Acciones, recursos y claves de condición para Amazon CloudFront en la Referencia de autorización de servicios.

Permisos necesarios para utilizar la consola de CloudFront

Para conceder acceso completo a la consola de CloudFront, debe conceder los permisos en la siguiente política de permisos:

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "acm:ListCertificates", "cloudfront:*", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "cloudwatch:GetMetricStatistics", "elasticloadbalancing:DescribeLoadBalancers", "iam:ListServerCertificates", "sns:ListSubscriptionsByTopic", "sns:ListTopics", "waf:GetWebACL", "waf:ListWebACLs" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "s3:ListAllMyBuckets", "s3:PutBucketPolicy" ], "Resource":"arn:aws:s3:::*" } ] }

Aquí se explica por qué son necesarios los permisos:

acm:ListCertificates

Al crear y actualizar distribuciones desde la consola de CloudFront, si desea configurar CloudFront para que requiera HTTPS entre el lector y CloudFront o entre CloudFront y el origen, este permiso le permite ver una lista de certificados de ACM.

Este permiso no es necesario si no utiliza la consola de CloudFront.

cloudfront:*

Le permite realizar todas las acciones de CloudFront.

cloudwatch:DescribeAlarms y cloudwatch:PutMetricAlarm

Le permite crear y ver alarmas de CloudWatch en la consola de CloudFront. Consulte también sns:ListSubscriptionsByTopic y sns:ListTopics.

Estos permisos no son necesarios si no utiliza la consola de CloudFront.

cloudwatch:GetMetricStatistics

Permite a CloudFront representar las métricas de CloudWatch en la consola de CloudFront.

Este permiso no es necesario si no utiliza la consola de CloudFront.

elasticloadbalancing:DescribeLoadBalancers

Al crear y actualizar las distribuciones, le permite ver una lista de balanceadores de carga Elastic Load Balancing en la lista de orígenes disponibles.

Este permiso no es necesario si no utiliza la consola de CloudFront.

iam:ListServerCertificates

Al crear y actualizar distribuciones desde la consola de CloudFront, si desea configurar CloudFront para que requiera HTTPS entre el lector y CloudFront o entre CloudFront y el origen, este permiso le permite ver una lista de certificados del almacén de certificados de IAM.

Este permiso no es necesario si no utiliza la consola de CloudFront.

s3:ListAllMyBuckets

Al crear y actualizar las distribuciones, le permite realizar las siguientes operaciones:

  • Ver una lista de buckets de S3 en la lista de orígenes disponibles

  • Ver una lista de buckets de S3 en los que se puede ahorrar registros de acceso

Este permiso no es necesario si no utiliza la consola de CloudFront.

S3:PutBucketPolicy

Al crear o actualizar distribuciones que restringen el acceso a buckets de S3, le permite a un usuario actualizar la política del bucket para conceder acceso a la identidad de acceso de origen de CloudFront. Para obtener más información, consulte Uso de una identidad de acceso de origen (heredado, no recomendado).

Este permiso no es necesario si no utiliza la consola de CloudFront.

sns:ListSubscriptionsByTopic y sns:ListTopics

Cuando crea alarmas de CloudWatch en la consola de CloudFront, le permite elegir un tema de SNS para las notificaciones.

Estos permisos no son necesarios si no utiliza la consola de CloudFront.

waf:GetWebACL y waf:ListWebACLs

Le permite ver una lista de ACL web de AWS WAF en la consola de CloudFront.

Estos permisos no son necesarios si no utiliza la consola de CloudFront.

Ejemplos de políticas administradas por el cliente

Puede crear sus propias políticas de IAM personalizadas con el fin de conceder permisos para realizar acciones de la API de CloudFront. Puede asociar estas políticas personalizadas a los usuarios o grupos de IAM que requieran los permisos especificados. Estas políticas funcionan cuando se utiliza la API de CloudFront, los SDK de AWS o la AWS CLI. A continuación se muestran algunos ejemplos de permisos en algunos casos de uso comunes. Para obtener más información acerca de la política que concede acceso total a los usuarios de CloudFront, consulte Permisos necesarios para utilizar la consola de CloudFront.

Ejemplo 1: permitir acceso de lectura a todas las distribuciones

La siguiente política de permisos concede al usuario permisos para ver todas las distribuciones en la consola de CloudFront:

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "acm:ListCertificates", "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:ListDistributions", "cloudfront:ListCloudFrontOriginAccessIdentities", "elasticloadbalancing:DescribeLoadBalancers", "iam:ListServerCertificates", "sns:ListSubscriptionsByTopic", "sns:ListTopics", "waf:GetWebACL", "waf:ListWebACLs" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "s3:ListAllMyBuckets" ], "Resource":"arn:aws:s3:::*" } ] }

Ejemplo 2: Creación, actualización y eliminación de distribuciones

La siguiente política de permisos permite a los usuarios crear, actualizar y eliminar distribuciones a través de la consola de CloudFront:

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "acm:ListCertificates", "cloudfront:CreateDistribution", "cloudfront:DeleteDistribution", "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:ListDistributions", "cloudfront:UpdateDistribution", "cloudfront:ListCloudFrontOriginAccessIdentities", "elasticloadbalancing:DescribeLoadBalancers", "iam:ListServerCertificates", "sns:ListSubscriptionsByTopic", "sns:ListTopics", "waf:GetWebACL", "waf:ListWebACLs" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "s3:ListAllMyBuckets", "s3:PutBucketPolicy" ], "Resource":"arn:aws:s3:::*" } ] }

cloudfront:ListCloudFrontOriginAccessIdentities permite a los usuarios conceder permiso automáticamente a una identidad de acceso de origen existente para obtener acceso a objetos en un bucket de Amazon S3. Si desea que los usuarios puedan crear identidades de acceso de origen, también es necesario conceder el permiso cloudfront:CreateCloudFrontOriginAccessIdentity.

Ejemplo 3: Permitir crear y publicar invalidaciones

La siguiente política de permisos concede a los usuarios permiso para crear y enumerar invalidaciones. Incluye acceso de lectura a las distribuciones de CloudFront, ya que para crear y visualizar invalidaciones, primero se muestra la configuración de una distribución:

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "acm:ListCertificates", "cloudfront:GetDistribution", "cloudfront:GetStreamingDistribution", "cloudfront:GetDistributionConfig", "cloudfront:ListDistributions", "cloudfront:ListCloudFrontOriginAccessIdentities", "cloudfront:CreateInvalidation", "cloudfront:GetInvalidation", "cloudfront:ListInvalidations", "elasticloadbalancing:DescribeLoadBalancers", "iam:ListServerCertificates", "sns:ListSubscriptionsByTopic", "sns:ListTopics", "waf:GetWebACL", "waf:ListWebACLs" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "s3:ListAllMyBuckets" ], "Resource":"arn:aws:s3:::*" } ] }

Ejemplo 4: Permitir la creación de una distribución

La siguiente política de permisos concede al usuario permiso para ver todas las distribuciones en la consola de CloudFront. Para la acción CreateDistribution, especifique el carácter comodín (*) para Resource en lugar de un comodín para el ARN (arn:aws:cloudfront::123456789012:distribution/*) de distribución. Para obtener más información acerca del elemento Resource, consulte Elementos de política JSON de IAM: Resource en la Guía del usuario de IAM.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "cloudfront:CreateDistribution", "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "cloudfront:ListDistributions", "Resource": "*" } ] }