Lumberyard
Guía del usuario (Version 1.21)

Control del acceso a los recursos

El establecimiento correcto de permisos de acceso es clave para garantizar que el administrador de recursos de Cloud Canvas administre con seguridad las características conectadas a la nube de su proyecto.

Escenarios de acceso y ProjectResourceHandler

Cloud Canvas Resource Manager requiere compatibilidad con los siguientes escenarios de acceso. Se pueden crear funciones adicionales con permisos más matizados, pero la tabla que figura a continuación describe los principales requisitos de acceso.


        Requisitos de acceso principales de Cloud Canvas

Un miembro del equipo de proyectos debe poder crear pilas de grupos de recursos que contengan recursos arbitrarios, pero no debe poder crear o modificar funciones ni políticas. Esto introduce una complejidad importante. Algunos recursos, como las funciones de Lambda, requieren que el desarrollador de juegos también proporcione un rol asumido por el recurso. El desarrollador de juegos debe poder crear este tipo de roles y administrar sus políticas. Sin embargo, la concesión de permisos de IAM de este tipo directamente a los miembros del equipo los convierte en administradores.

Para habilitar la funcionalidad requerida a la vez que se limita lo que un miembro del equipo de proyectos puede hacer directamente, el administrador de recursos de Cloud Canvas utiliza recursos personalizados de AWS CloudFormation. Los controladores de recursos personalizados del administrador de recursos de Cloud Canvas se implementan en la función ProjectResourceHandler de Lambda en la pila del proyecto. El rol de ejecución de la función Lambda (ProjectResourceHandlerExecution) concede permisos que necesita el administrador de recursos de Cloud Canvas. Estos permisos no se conceden a los miembros del equipo de proyectos.

Por ejemplo, el recurso Custom::AccessControl, que se describe en detalle más adelante en este documento, es responsable de la administración de las políticas incorporadas en diversos roles. Puede realizar estas acciones en nombre del miembro del equipo de proyectos. Sin embargo, el controlador Custom::AccessControl también debe saber qué es lo que debe poner en estas políticas. No puede confiar en que el miembro del equipo de proyecto facilite esta información directamente. En su lugar, debe crear la información a partir de fuentes de confianza. Para ello, AccessControl utiliza metadatos en las definiciones de recursos desde AWS CloudFormation. También crea ARN para los recursos de la pila identificados por AWS CloudFormation. De esta forma, solo un usuario con permiso para actualizar la pila puede influir en las políticas que se crean para los recursos de la pila.


        Flujo de permisos de Cloud Canvas

Uso del recurso Custom::AccessControl

Como se ha explicado anteriormente, la seguridad del administrador de recursos de Cloud Canvas depende de los roles de IAM y las credenciales utilizadas para asumir tales roles. La sección Escenarios de acceso y ProjectResourceHandler que aparece anteriormente en este tema explica por qué el administrador de recursos de Cloud Canvas tiene la responsabilidad de administrar las políticas incorporadas asociadas a estos roles.

En esta sección se describen los datos utilizados por el administrador de recursos Custom::AccessControl para configurar los roles del proyecto. Debe definirse un recurso Custom::AccessControl en las siguientes plantillas:

Plantilla de Descripción
project-template.json Hace que las políticas en los roles definidos en el archivo project-template.json se actualicen. Estos roles pueden facilitar acceso a cualquier recurso definido en cualquier grupo de recursos en todas las implementaciones.
deployment-access-template.json Hace que las políticas en los roles definidos en el archivo deployment-access-template.json se actualicen. Estos roles pueden facilitar acceso a cualquier recurso definido en una implementación determinada.
resource-group-template.json Hace que las políticas en los roles definidos en los archivos project-template.json y deployment-access-template.json se actualicen. Solo se actualizan los permisos para el recurso definido en el archivo resource-group-template.json. Para los roles definidos en el archivo deployment-access-template.json, solo se actualizan las instancias de los roles para la implementación que contiene la pila de grupo de recursos.

Este proceso se ilustra en el siguiente diagrama. El diagrama muestra los metadatos que se leen y los roles que se actualizan cuando se actualiza una pila de grupo de recursos, una pila de acceso de implementación o una pila de proyecto.


        Configuración de roles del proyecto

Definiciones del recurso Custom::AccessControl

El recurso Custom::AccessControl admite las siguientes propiedades:

Propiedad Descripción
ConfigurationBucket El nombre del bucket de configuración del proyecto. Esta propiedad es obligatoria.
ConfigurationKey Identifica la ubicación en el bucket de configuración en la que se almacenan los datos de funcionamiento de la pila. Sin embargo, el administrador de recursos personalizados depende de que este valor cambie en cada actualización. Los cambios de propiedades como este hacen que AWS CloudFormation invoque el administrador de recursos personalizados en cada operación de la pila.
ServiceToken Identifica la función Lambda que se invoca para el recurso personalizado. Esta debe ser la función ProjectResourceHandler de Lambda global del proyecto, que se define en el archivo project-template.json.

El DependsOn atributo de la definición de recursos Custom::AccessControl deben enumerar los siguientes activos.

  • Todos los recursos de los archivos project-template.json, deployment-access-template.json o resource-group-template.json que proporcionan permisos de metadatos.

     

  • Todos los recursos de AWS::IAM::Role que tengan metadatos de RoleMapping.

     

  • Cualquier recursos personalizado que cree roles implícitos, como los recursos Custom::LambdaConfiguration y Custom::ServiceApi.

     

Cuando utiliza la AWS CLI para administrar roles y permisos, se enumeran estos recursos por usted. Sin embargo, si edita estos archivos usted mismo, es importante que mantenga estas dependencias. Sin estas dependencias, el recurso Custom::AccessControl podría ser actualizado antes de que se hayan actualizado otros recursos. En este caso, Custom::AccessControl ya no tiene acceso a los últimos metadatos de los recursos, y puede que los cambios previstos ya no se realicen.

Para obtener más información sobre el establecimiento de permisos de Custom::AccessControl, consulte Metadatos de permisos para definiciones de recursos.