Lumberyard
Guía del usuario (Version 1.21)

Políticas y roles integrados en Cloud Canvas

Puede usar los roles y las políticas integradas en Cloud Canvas para administrar los permisos de implementación y los recursos de su proyecto.

Roles integrados

Puede utilizar el recurso AWS::IAM:Role para definir roles en los archivos project-template.json o deployment-access-template.json. El administrador de recursos de Cloud Canvas define los roles siguientes.

DeploymentAdmin

Concede acceso restringido a la implementación. Similar al rol DeploymentOwner, pero no puede crear ni eliminar pilas de grupo de recursos. Se trata de un rol muy práctico que es más seguro que DeploymentOwner. Para añadir más restricciones al rol DeploymentAdmin, modifique la definición de la política DeploymentAdminRestrictions.

Tipo de política Descripción
Asumir rol Se puede asumir mediante los principios definidos en la misma cuenta de AWS, de acuerdo con sus permisos.
Attached DeploymentAccess, DeploymentOwnerAccess y DeploymentAdminRestrictions.
Inline Se han añadido y eliminado por el controlador de recursos de Custom::AccessControl en función de mapeos de roles abstractos.

Ubicación del archivo: \project_name\deployment_name\deployment-access-template.json.

DeploymentOwner

Concede acceso completo a todos los recursos de una implementación. Para modificar los permisos predeterminados que concede este rol, modifique la definición de la política DeploymentOwnerAccess.

Tipo de política Descripción
Asumir rol Se puede asumir mediante los principios definidos en la misma cuenta de AWS, de acuerdo con sus permisos.
Attached DeploymentAccess y DeploymentOwnerAccess.
Inline Se han añadido y eliminado por el controlador de recursos de Custom::AccessControl en función de mapeos de roles abstractos.

Ubicación del archivo: \project_name\deployment_name\deployment-access-template.json.

nota

Los permisos añadidos a DeploymentOwnerAccess también se conceden a DeploymentAdmin salvo que lo deniegue DeploymentAdminRestrictions.

Jugador

Concede a los jugadores acceso limitado a recursos específicos en una implementación según lo que determinen los metadatos de permisos en esos recursos.

Tipo de política Descripción
Asumir rol Lo puede asumir cognito-identity.amazonaws.com.
Attached Ninguno.
Inline Se han añadido y eliminado por el controlador de recursos de Custom::AccessControl en función de mapeos de roles abstractos.

Ubicación del archivo: \project_name\deployment_name\deployment-access-template.json.

ProjectAdmin

Concede a los administradores de proyecto acceso restringido a todas las implementaciones del proyecto. Similar al rol ProjectOwner, pero no puede crear, actualizar ni eliminar las implementaciones con nombres que comiencen por "Release". Se trata de un rol muy práctico que es más seguro que ProjectOwner. Para añadir más restricciones al rol ProjectAdmin, modifique la definición de ProjectAdminRestrictions.

Tipo de política Descripción
Asumir rol Se puede asumir mediante los principios definidos en la misma cuenta de AWS, de acuerdo con sus permisos.
Attached ProjectAccess, ProjectOwnerAccess y ProjectAdminRestrictions.
Inline Se han añadido y eliminado por el controlador de recursos de Custom::AccessControl en función de mapeos de roles abstractos.

Ubicación del archivo: \project_name\project-template.json.

aviso

La intención de este rol es incluir de forma segura en un "entorno de prueba" las acciones del usuario para que no afecten accidentalmente a otros proyectos. Sin embargo, cualquier persona que pueda asumir el rol ProjectAdmin se puede conceder a sí mismo permisos adicionales. Dado que un usuario de ProjectAdmin puede escalar el privilegio del rol, el rol ProjectAdmin debe seguir considerándose un rol del administrador de la cuenta y, por lo tanto, es un posible problema de seguridad.

ProjectOwner

Concede a los administradores de proyecto acceso completo a todos los recursos del proyecto. Para modificar los permisos predeterminados que concede este rol, modifique la definición de la política ProjectOwnerAccess.

Tipo de política Descripción
Asumir rol Se puede asumir mediante los principios definidos en la misma cuenta de AWS, de acuerdo con sus permisos.
Attached ProjectAccess y ProjectOwnerAccess.
Inline Se han añadido y eliminado por el controlador de recursos de Custom::AccessControl en función de mapeos de roles abstractos.

Ubicación del archivo: \project_name\project-template.json.

aviso

  • La intención de este rol es incluir de forma segura en un "entorno de prueba" las acciones del usuario para que no afecten accidentalmente a otros proyectos. Sin embargo, cualquier persona que pueda asumir el rol ProjectOwner se puede conceder a sí mismo permisos adicionales. Dado que un usuario de ProjectOwner puede escalar el privilegio del rol, el rol ProjectOwner debe seguir considerándose un rol del administrador de la cuenta y, por lo tanto, es un posible problema de seguridad.

  • Los permisos añadidos a ProjectOwnerAccess también se conceden a ProjectAdmin salvo que lo deniegue ProjectAdminRestrictions.

ProjectResourceHandlerExecution

Concede permisos de ejecución en tiempo de ejecución de la función Lambda de ProjectResourceHandler. Este rol concede permisos para que el administrador de recursos de Cloud Canvas utilice los recursos personalizados de AWS CloudFormation para las operaciones de la pila. Para obtener más información, consulte Escenarios de acceso y ProjectResourceHandler.

Tipo de política Descripción
Asumir rol Puede ser asumido por el servicio de AWS Lambda.
Attached Ninguno.
Inline ProjectAccess.

Ubicación del archivo: \project_name\project-template.json.

Servidor

Concede a las compilaciones del servidor dedicado de Lumberyard acceso a recursos específicos de una implementación, según lo que determinen los metadatos de permisos en esos recursos.

Tipo de política Descripción
Asumir rol Lo puede asumir cognito-identity.amazonaws.com.
Attached Ninguno.
Inline Se han añadido y eliminado por el controlador de recursos de Custom::AccessControl en función de mapeos de roles abstractos.

Ubicación del archivo: \project_name\deployment_name\deployment-access-template.json.

Ámbito del rol

El archivo de configuración en el que define un rol determina los recursos necesarios para que el rol proporcione acceso.

Archivos Ámbito
project-template.json Se aplica a todos los recursos de todos los grupos de recursos para implementaciones all. Se crea una sola instancia del rol para todo el proyecto.
deployment-template.json Se aplica a todos los recursos de todos los grupos de recursos para una implementación specific. Se crea una instancia independiente del rol para cada implementación.

Puede utilizar la herramienta de línea de comando lmbr_aws para administrar las definiciones de rol en los archivos project-template.json y deployment-access-template.json. Para obtener más información, consulte Uso de la línea de comando de Cloud Canvas para administrar roles y permisos.

Roles implícitos

Algunos recursos personalizados de Cloud Canvas también crean roles. Por ejemplo, cuando se ejecuta una función Lambda, asume el rol que crea el recurso Custom::LambdaConfiguration. Cuando API Gateway llama a una función Lambda o tiene acceso a otros recursos, asume el rol que el recurso Custom::ServiceApi crea. Incluir estos recursos personalizados en un archivo resource-group-template.json hace que estos roles implícitos se creen (y eliminen cuando se elimina el recurso). Para obtener información acerca de los nombres de roles implícitos, consulte Mapeos de roles implícitos.

Políticas administradas

Puede utilizar los recursos de AWS::IAM::ManagedPolicy para definir los permisos que se comparten entre cualquier número de roles. Cloud Canvas define las siguientes políticas administradas automáticamente:

Auto Scaling Archivo Descripción
CloudGemPortalUserAccess project-template.json Concede acceso solo de usuario a Cloud Gem Portal. No concede acceso a las características del administrador de Cloud Gem Portal, como la administración de usuarios o los registros de proyectos.
ProjectAccess project-template.json Define los permisos necesarios para tener acceso a la configuración de la implementación y el proyecto que se deben leer para asumir un rol de ámbito de proyecto. Para obtener más información, consulte Asumir un rol.
ProjectOwnerAccess project-template.json Define los permisos predeterminados concedidos a los roles ProjectOwner y ProjectAdmin.
ProjectAdminRestrictions project-template.json Define restricciones para la política ProjectOwnerAcess que se aplican solo al rol ProjectAdmin.
DeploymentAccess deployment-access-template.json Define los permisos necesarios para tener acceso a la configuración de la implementación y el proyecto que deben leerse para asumir un rol específico de la implementación. Para obtener más información, consulte Asumir un rol.
DeploymentOwnerAccess deployment-access-template.json Define los permisos predeterminados concedidos a los roles DeploymentOwner y DeploymentAdmin.
DeploymentAdminRestrictions deployment-access-template.json Define restricciones para la política DeploymentOwnerAccess que se aplican solo al rol DeploymentAdmin.

A los roles ProjectAdmin y DeploymentAdmin se conceden los mismos permisos que a los roles ProjectOwner y DeploymentOwner, salvo los permisos que deniegan específicamente las políticas administradas ProjectAdminRestrictions y DeploymentAdminRestrictions, respectivamente. En efecto, a un "administrador" se le conceden todos los permisos de un "propietario" menos las acciones especiales que el "administrador" no debería realizar.

Metadatos de mapeo de roles

La propiedad AbstractRole en el objeto de metadatos Permission no especifica directamente el papel real que recibe el permiso descrito. Estos valores deben asignarse a roles reales de IAM. Esto permite configurar los roles de la forma que tenga sentido para el proyecto. También elimina la necesidad de modificar los permisos definidos por grupos de recursos individuales.

La posibilidad de asignar roles abstractos a roles reales de IAM es importante cuando se utiliza una gema en la nube en varios proyectos o de un tercero. Las gemas en la nube adquiridas a un tercero podrían tener roles diferentes de los que se usan en su organización. (Una gema en la nube es una gema de Lumberyard que usa los recursos de AWS definidos por un grupo de recursos de Cloud Canvas. Para obtener más información, consulte Gemas en la nube.)

El recurso Custom::AccessControl buscará los metadatos RoleMappings de CloudCanvas en los recursos de AWS::IAM::Role para determinar qué roles abstractos se asignan a ese rol físico. En el siguiente ejemplo, el rol abstracto CustomerSupport de todos los grupos de recursos se asigna al rol físico DevOps.

... "DevOps": { "Type": "AWS::IAM::Role", "Properties": { "Path": { "Fn::Join": [ "", [ "/", { "Ref": "ProjectStack" }, "/", { "Ref": "DeploymentName" }, "/" ]] } }, "Metadata": { "CloudCanvas": { "RoleMappings": [ { "AbstractRole": [ "*.CustomerSupport" ], "Effect": "Allow" } ] } } }, ...

Cada objeto de metadatos RoleMapping de Cloud Canvas puede tener las siguientes propiedades.

Propiedad Descripción
AbstractRole Cadena o lista de cadenas necesaria con formato <resource-group-name>.<abstract-role-name>. Para que coincidan los roles abstractos definidos en cualquier grupo de recursos, utilice* para <resource-group-name>. Para que coincidan los roles abstractos definidos únicamente en un grupo de recursos específicos, use un nombre de grupo de recursos real.
Effect Cadena obligatoria. Debe ser Allow para permitir una acción definida por los metadatos de permiso o Deny para denegar una acción. Esto se usa como la propiedad Effect en una instrucción de la política.

Puede utilizar la herramienta de línea de comando lmbr_aws para administrar los metadatos RoleMappings en las definiciones de recursos de roles en los archivos project-template.json y deployment-access-template.json. Para obtener más información, consulte Uso de la línea de comando de Cloud Canvas para administrar roles y permisos.

Mapeos de roles predeterminados

Cloud Canvas define los mapeos de roles para las siguientes funciones:

Rol Archivo Mapeo de roles predeterminado
ProjectResourceHandlerExecution project-template.json ninguno
ProjectOwner project-template.json *.ProjectAdmin *.ProjectOwner
ProjectAdmin project-template.json *.ProjectAdmin
DeploymentOwner deployment-access-template.json *.DeploymentAdmin *.DeploymentOwner
DeploymentAdmin deployment-access-template.json *.DeploymentAdmin
Player deployment-access-template.json *.Player
Server deployment-access-template.json *.Server

Mapeos de roles implícitos

Como se mencionó en Roles implícitos, los mapeos de roles se definen automáticamente para los roles implícitos que crean los recursos de Cloud Canvas como Custom::LambdaConfiguration. Estas asignaciones solo se usan con metadatos de los permisos en el mismo archivo resource-group-template.json que el recurso personalizado que crea el rol. El nombre del rol abstracto usado en los metadatos de permiso como referencia a un papel implícito depende del tipo de recurso personalizado.

Resource (Recurso) Implicit Role Name (Nombre del rol implícito)
Custom::LambdaConfiguration El nombre de la función Lambda, como lo especifica la propiedad Function en la definición del recurso Custom::LambdaConfiguration. Esto es también el ID lógico del recurso AWS::Lambda::Function.
Custom::ServiceApi El ID lógico del recurso Custom::ServiceApi.