Ejemplos de políticas basadas en identidades de Amazon Elastic Container Service - Amazon Elastic Container Service

Ejemplos de políticas basadas en identidades de Amazon Elastic Container Service

De forma predeterminada, los usuarios y roles no tienen permiso para crear ni modificar recursos de Amazon ECS. Tampoco puedes realizar tareas mediante la AWS Management Console, la AWS Command Line Interface (AWS CLI) o la API de AWS. Un gestionador 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 gestionador 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 identidad de IAM mediante el uso de estos documentos de políticas JSON de ejemplo, consulte Creación de políticas de IAM (consola) 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 ECS, incluido el formato de los ARN para cada uno de los tipos de recursos, consulte Acciones, recursos y claves de condición de Amazon Cognito en la Referencia de autorizaciones de servicio.

Prácticas recomendadas sobre políticas de Amazon ECS

Las políticas basadas en identidades determinan si alguien puede crear, eliminar o acceder a los recursos de Amazon ECS de su 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 de 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 de AWS, que conceden permisos para muchos casos de uso comunes. Están disponibles en su Cuenta de AWS. Se recomienda definir políticas gestionadas 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 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 puedes 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, consulta Políticas y permisos en IAM en la Guía del usuario de IAM.

  • Utiliza condiciones en las políticas de IAM para restringir aún más el acceso: puedes agregar una condición a sus políticas para limitar el acceso a las acciones y los recursos. Por ejemplo, puedes 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.

  • Utiliza 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 obtener más información, consulte Validación de políticas mediante el Analizador de acceso de IAM en la Guía del usuario de IAM.

  • Solicite la autenticación multifactor (MFA): si se encuentra en una situación en la que necesite usuarios raíz o de IAM en su Cuenta de AWS, active la MFA para obtener una mayor seguridad. Para exigir la MFA cuando se invoquen las operaciones de la API, añada condiciones de MFA a sus políticas. Para obtener más información, consulte Acceso seguro a la API con MFA en la Guía del usuario de IAM.

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

Consentimiento para que los usuarios de Amazon ECS vean 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 gestionadas 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": "*" } ] }

Ejemplos de clústeres de Amazon ECS

La siguiente política de IAM concede permiso para crear y mostrar la lista de clústeres. Las acciones CreateCluster y ListClusters no aceptan ningún recurso, por tanto la definición de recursos se define en * para todos los recursos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:CreateCluster", "ecs:ListClusters" ], "Resource": ["*"] } ] }

La siguiente política de IAM concede permiso para describir y eliminar un clúster determinado. Las acciones DescribeClusters y DeleteCluster aceptan ARN de clústeres como recursos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeClusters", "ecs:DeleteCluster" ], "Resource": ["arn:aws:ecs:us-east-1:<aws_account_id>:cluster/<cluster_name>"] } ] }

La siguiente política de IAM se puede asociar a un usuario o grupo y solo permitiría a dicho usuario o grupo realizar operaciones en un clúster determinado.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecs:Describe*", "ecs:List*" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "ecs:DeleteCluster", "ecs:DeregisterContainerInstance", "ecs:ListContainerInstances", "ecs:RegisterContainerInstance", "ecs:SubmitContainerStateChange", "ecs:SubmitTaskStateChange" ], "Effect": "Allow", "Resource": "arn:aws:ecs:us-east-1:<aws_account_id>:cluster/default" }, { "Action": [ "ecs:DescribeContainerInstances", "ecs:DescribeTasks", "ecs:ListTasks", "ecs:UpdateContainerAgent", "ecs:StartTask", "ecs:StopTask", "ecs:RunTask" ], "Effect": "Allow", "Resource": "*", "Condition": { "ArnEquals": {"ecs:cluster": "arn:aws:ecs:us-east-1:<aws_account_id>:cluster/default"} } } ] }

Ejemplos de instancias de contenedor de Amazon ECS

El agente de Amazon ECS se encarga del registro de instancias de contenedor, pero puede haber ocasiones en las que desee permitir a un usuario anular el registro de una instancia manualmente desde un clúster. Quizás la instancia de contenedor se registró accidentalmente en el clúster equivocado o la instancia se terminó mientras había tareas en ejecución.

La siguiente política de IAM permite a un usuario crear una lista y anular el registro de las instancias de contenedor de un clúster determinado:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DeregisterContainerInstance", "ecs:ListContainerInstances" ], "Resource": ["arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>"] } ] }

La siguiente política de IAM permite a un usuario describir una instancia de contenedor específica en un clúster determinado. Para abrir este permiso a todas las instancias de contenedor en un clúster, puede sustituir el UUID de la instancia de contenedor por *.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ecs:DescribeContainerInstances"], "Condition": { "ArnEquals": {"ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>"} }, "Resource": ["arn:aws:ecs:<region>:<aws_account_id>:container-instance/<cluster_name>/<container_instance_UUID>"] } ] }

Ejemplos de definición de tarea de Amazon ECS

Las políticas de IAM de definición de tareas no admiten los permisos de nivel de recursos, pero la siguiente política de IAM permite a un usuario registrar, enumerar y describir definiciones de tareas:

Si utiliza la consola, debe agregar CloudFormation: CreateStack como un Action.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RegisterTaskDefinition", "ecs:ListTaskDefinitions", "ecs:DescribeTaskDefinition" ], "Resource": ["*"] } ] }

Ejemplo de tarea de ejecución de Amazon ECS

Los recursos para RunTask son definiciones de tareas. Para limitar los clústeres en los que un usuario puede ejecutar definiciones de tareas, puede especificarlos en el bloque Condition. La ventaja es que no tiene que enumerar ambas definiciones de tarea y clústeres en los recursos para permitir el acceso adecuado. Puede aplicar uno, el otro o ambos.

La siguiente política de IAM concede permiso para ejecutar cualquier revisión de una definición de tarea específica en un clúster determinado:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ecs:RunTask"], "Condition": { "ArnEquals": {"ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>"} }, "Resource": ["arn:aws:ecs:<region>:<aws_account_id>:task-definition/<task_family>:*"] } ] }

Ejemplo de tarea de inicio de Amazon ECS

Los recursos para StartTask son definiciones de tareas. Para limitar los clústeres e instancias de contenedor en los que un usuario puede comenzar definiciones de tareas, puede especificarlos en el bloque Condition. La ventaja es que no tiene que enumerar ambas definiciones de tarea y clústeres en los recursos para permitir el acceso adecuado. Puede aplicar uno, el otro o ambos.

La siguiente política de IAM concede permiso para comenzar cualquier revisión de una definición de tarea específica en un clúster determinado y una instancia de contenedor en particular.

nota

En este ejemplo, si llama a la API StartTask con la AWS CLI u otro SDK de AWS, debe especificar la revisión de la definición de tarea para que mapeo de Resource coincida.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ecs:StartTask"], "Condition": { "ArnEquals": { "ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>", "ecs:container-instances": ["arn:aws:ecs:<region>:<aws_account_id>:container-instance/<cluster_name>/<container_instance_UUID>"] } }, "Resource": ["arn:aws:ecs:<region>:<aws_account_id>:task-definition/<task_family>:*"] } ] }

Ejemplos de enumeración y descripción de tareas de Amazon ECS

La siguiente política de IAM concede permiso a un usuario para mostrar tareas para un clúster determinado:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ecs:ListTasks"], "Condition": { "ArnEquals": {"ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>"} }, "Resource": ["*"] } ] }

La siguiente política de IAM concede permiso a un usuario para describir una tarea especificada en un clúster determinado:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ecs:DescribeTasks"], "Condition": { "ArnEquals": {"ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>"} }, "Resource": ["arn:aws:ecs:<region>:<aws_account_id>:task/<cluster_name>/<task_UUID>"] } ] }

Ejemplo de creación de servicios de Amazon ECS

La siguiente política de IAM permite a un usuario crear servicios de Amazon ECS en la AWS Management Console:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:Describe*", "application-autoscaling:PutScalingPolicy", "application-autoscaling:RegisterScalableTarget", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "ecs:List*", "ecs:Describe*", "ecs:CreateService", "elasticloadbalancing:Describe*", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetRole", "iam:ListAttachedRolePolicies", "iam:ListRoles", "iam:ListGroups", "iam:ListUsers" ], "Resource": ["*"] } ] }

Ejemplo de actualización de servicios de Amazon ECS

La siguiente política de IAM permite a un usuario actualizar servicios de Amazon ECS en la AWS Management Console:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:Describe*", "application-autoscaling:PutScalingPolicy", "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:RegisterScalableTarget", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "ecs:List*", "ecs:Describe*", "ecs:UpdateService", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetRole", "iam:ListAttachedRolePolicies", "iam:ListRoles", "iam:ListGroups", "iam:ListUsers" ], "Resource": ["*"] } ] }

Descripción de los servicios de Amazon ECS basados en etiquetas

Puede utilizar condiciones en la política basada en la identidad para controlar el acceso a los recursos de Amazon ECS basados en etiquetas. En este ejemplo se muestra cómo crear una política que permita describir sus servicios. Sin embargo, los permisos solo se conceden si la etiqueta de servicio Owner tiene el valor del nombre de usuario de dicho usuario. Esta política también proporciona los permisos necesarios para llevar a cabo esta acción en la consola.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DescribeServices", "Effect": "Allow", "Action": "ecs:DescribeServices", "Resource": "*" }, { "Sid": "ViewServiceIfOwner", "Effect": "Allow", "Action": "ecs:DescribeServices", "Resource": "arn:aws:ecs:*:*:service/*", "Condition": { "StringEquals": {"ecs:ResourceTag/Owner": "${aws:username}"} } } ] }

También puede asociar esta política al usuario de IAM en su cuenta. Si un usuario con el nombre richard-roe intenta describir un servicio de Amazon ECS, el servicio debe tener una etiqueta Owner=richard-roe u owner=richard-roe. De lo contrario, se le deniega el acceso. La clave de la etiqueta de condición Owner coincide con los nombres de las claves de condición Owner y owner porque no distinguen entre mayúsculas y minúsculas. 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.

Ejemplo de denegación de anulación del espacio de nombres de Amazon ECS Service Connect

La siguiente política de IAM impide a un usuario anular el espacio de nombres predeterminado de Service Connect en una configuración de servicio. El espacio de nombres predeterminado se establece en el clúster. Sin embargo, puede anularlo en una configuración de servicio. Para mantener la coherencia, considere configurar todos los servicios nuevos para que usen el mismo espacio de nombres. Utilice las siguientes claves de contexto para exigir a los servicios que usen un espacio de nombres específico. Sustituya los <region>, <aws_account_id>, <cluster_name> y <namespace_id> del ejemplo siguiente por el suyo propio.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:CreateService", "ecs:UpdateService" ], "Condition": { "ArnEquals": { "ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>", "ecs:namespace": "arn:aws:servicediscovery:<region>:<aws_account_id>:namespace/<namespace_id>" } }, "Resource": "*" } ] }