

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.

# Administrar los inquilinos de varios productos SaaS en un único plano de control
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane"></a>

*Ramanna Avancha, Kishan Kavala, Anusha Mandava y Jenifer Pascal, Amazon Web Services*

## Resumen
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-summary"></a>

Este patrón muestra cómo gestionar los ciclos de vida de los inquilinos en varios productos de software como servicio (SaaS) en un único plano de control en la nube de AWS. La arquitectura de referencia proporcionada puede ayudar a las organizaciones a reducir la implementación de características redundantes y compartidas en sus productos SaaS individuales y a proporcionar eficiencias de gobierno a escala.

Las grandes empresas pueden tener varios productos SaaS en varias unidades de negocio. A menudo, estos productos deben aprovisionarse para que los utilicen inquilinos externos con diferentes niveles de suscripción. Sin una solución de usuario común, los administradores de TI deben dedicar tiempo a administrar funciones indiferenciadas en varios APIs SaaS, en lugar de centrarse en el desarrollo de las funciones principales del producto.

La solución de inquilino común que se proporciona en este patrón puede ayudar a centralizar la administración de muchas de las características de los productos SaaS compartidos de una organización, incluidas las siguientes:
+ Seguridad
+ Aprovisionamiento de inquilinos
+ Almacenamiento de datos del inquilino
+ Comunicaciones con los inquilinos
+ Gestión de productos
+ Registro y supervisión de métricas

## Requisitos previos y limitaciones
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Conocimiento de Amazon Cognito o de un proveedor de identidades (IdP) externo
+ Conocimiento de Amazon API Gateway
+ Conocimiento de AWS Lambda
+ Conocimiento de Amazon DynamoDB
+ Conocimientos de AWS Identity and Access Management (IAM)
+ Conocimiento de AWS Step Functions
+ Conocimientos de AWS CloudTrail y Amazon CloudWatch
+ Conocimiento de las bibliotecas y el código de Python
+ Conocimiento del SaaS APIs, incluidos los diferentes tipos de usuarios (organizaciones, inquilinos, administradores y usuarios de aplicaciones), los modelos de suscripción y los modelos de aislamiento de inquilinos
+ Conocimiento de los requisitos de SaaS multiproducto y de las suscripciones multiusuario de su organización

**Limitaciones**
+ Las integraciones entre la solución de inquilino común y los productos SaaS individuales no se incluyen en este patrón.
+ Este patrón implementa el servicio Amazon Cognito únicamente en una sola región de AWS.

## Arquitectura
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-architecture"></a>

**Pila de tecnología de destino**
+ Amazon API Gateway
+ Amazon Cognito
+ AWS CloudTrail
+ Amazon CloudWatch
+ Amazon DynamoDB
+ IAM
+ AWS Lambda
+ Amazon Simple Storage Service (Amazon S3)
+ Amazon Simple Notification Service (Amazon SNS)
+ AWS Step Functions

**Arquitectura de destino**

El siguiente diagrama muestra un ejemplo de flujo de trabajo para administrar los ciclos de vida de los inquilinos en varios productos SaaS en un único plano de control en la nube de AWS.

![\[Flujo de trabajo para administrar los ciclos de vida de los inquilinos en un único plano de control\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/4306bc76-22a7-45ca-a107-43df6c6f7ac8/images/700faf4d-c28f-4814-96aa-2d895cdcb518.png)


 En el diagrama, se muestra el siguiente flujo de trabajo:

1. Un usuario de AWS inicia el aprovisionamiento de inquilinos, el aprovisionamiento de productos o las acciones relacionadas con la administración mediante una llamada a un punto de conexión de API Gateway.

1. El usuario se autentica mediante un token de acceso que se recupera de un grupo de usuarios de Amazon Cognito o de otro IdP.

1. Las tareas individuales de aprovisionamiento o administración se ejecutan mediante funciones de Lambda que se integran con los puntos de conexión de API de API Gateway.

1. La administración APIs de la solución Common Tenant (para inquilinos, productos y usuarios) recopila todos los parámetros de entrada, encabezados y símbolos necesarios. A continuación, la administración APIs invoca las funciones Lambda asociadas.

1. El servicio de IAM valida los permisos de IAM tanto para la administración APIs como para las funciones de Lambda.

1. Las funciones de Lambda almacenan y recuperan datos de los catálogos (para inquilinos, productos y usuarios) en DynamoDB y Amazon S3.

1. Una vez validados los permisos, se invoca un flujo de trabajo de AWS Step Functions para realizar una tarea específica. El ejemplo del diagrama muestra un flujo de trabajo de aprovisionamiento de inquilinos.

1. Las tareas individuales del flujo de trabajo de AWS Step Functions se ejecutan en un flujo de trabajo predeterminado (máquina de estado).

1. Todos los datos esenciales necesarios para ejecutar la función de Lambda asociada a cada tarea del flujo de trabajo se recuperan de DynamoDB o Amazon S3. Es posible que sea necesario aprovisionar otros recursos de AWS mediante una CloudFormation plantilla de AWS.

1. Si es necesario, el flujo de trabajo envía una solicitud para aprovisionar recursos de AWS adicionales para un producto SaaS específico a la cuenta de AWS de ese producto.

1. Cuando la solicitud se realiza correctamente o no, el flujo de trabajo publica la actualización de estado como un mensaje en un tema de Amazon SNS.

1. Amazon SNS está suscrito al tema Amazon SNS del flujo de trabajo Step Functions.

1. A continuación, Amazon SNS envía la actualización del estado del flujo de trabajo al usuario de AWS.

1. Los registros de las acciones de cada servicio de AWS, incluida una pista de auditoría de las llamadas a la API, se envían a CloudWatch. Se pueden configurar reglas y alarmas específicas CloudWatch para cada caso de uso.

1. Los registros se archivan en buckets de Amazon S3 para fines de auditoría.

**Automatización y escala**

Este patrón utiliza una CloudFormation plantilla para ayudar a automatizar la implementación de la solución Common Tenant. La plantilla también puede ayudarlo a escalar o reducir verticalmente los recursos asociados con rapidez.

Para obtener más información, consulte [Trabajar con CloudFormation plantillas de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) en la *Guía del CloudFormation usuario de AWS*.

## Tools (Herramientas)
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-tools"></a>

**Servicios de AWS**
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) le ayuda a crear, publicar, mantener, supervisar y proteger REST, HTTP y WebSocket APIs a cualquier escala.
+ [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) ofrece autenticación, autorización y administración de usuarios para aplicaciones móviles y web.
+ [AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) le CloudTrail ayuda a auditar la gobernanza, el cumplimiento y el riesgo operativo de su cuenta de AWS.
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) le CloudWatch ayuda a monitorizar las métricas de sus recursos de AWS y las aplicaciones que ejecuta en AWS en tiempo real.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) es un servicio de base de datos de NoSQL completamente administrado que ofrece un rendimiento rápido, predecible y escalable.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le permite administrar de forma segura el acceso a los recursos de AWS mediante el control de quién está autenticado y autorizado a utilizarlos.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
+ [Amazon Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) le permite coordinar y administrar el intercambio de mensajes entre publicadores y clientes, incluidos los servidores web y las direcciones de correo electrónico.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) es un servicio de orquestación sin servidor que le permite combinar funciones de Lambda AWS y otros servicios de AWS para crear aplicaciones esenciales desde el punto de vista empresarial.

## Prácticas recomendadas
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-best-practices"></a>

La solución de este patrón utiliza un único plano de control para gestionar la incorporación de varios inquilinos y proporcionar acceso a varios productos de SaaS. El plano de control ayuda a los usuarios administrativos a gestionar otros cuatro planos con características específicas:
+ Plano de seguridad
+ Plano de flujo de trabajo
+ Plano de comunicación
+ Plano de registro y monitoreo

## Epics
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-epics"></a>

### Configuración del plano de seguridad
<a name="configure-the-security-plane"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Establezca los requisitos para su plataforma SaaS multiusuario. | Establezca requisitos detallados para lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html) | Arquitecto de la nube, administrador de sistemas de AWS | 
| Configure el servicio de Amazon Cognito. | Siga las instrucciones de [Introducción a Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-getting-started.html) de la *Guía para desarrolladores de Amazon Cognito*. | Arquitecto de la nube | 
| Configure las políticas de IAM necesarias. | Cree las políticas de IAM necesarias para su caso de uso. A continuación, asigne las políticas a los roles de IAM en Amazon Cognito.Para obtener más información, consulte [Administrar el acceso mediante políticas](https://docs.aws.amazon.com/cognito/latest/developerguide/security-iam.html#security_iam_access-manage) y [Control de acceso basado en roles](https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html) en la *Guía para desarrolladores de Amazon Cognito*. | Administrador de la nube, arquitecto de la nube, seguridad de AWS IAM | 
| Configure los permisos de API necesarios.  | Configure los permisos de acceso a API Gateway mediante roles y políticas de IAM y autorizadores Lambda.Para obtener instrucciones, consulte las secciones siguientes de la *Guía de desarrolladores de Amazon API Gateway*:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html) | Administrador de la nube, arquitecto de la nube | 

### Configuración del plano de datos
<a name="configure-the-data-plane"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree los catálogos de datos necesarios. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html)Para obtener más información, consulte [Configuración de DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SettingUp.html) en la *Guía para desarrolladores de Amazon DynamoDB*. | Administrador de base de datos | 

### Configuración del plano de control
<a name="configure-the-control-plane"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree funciones Lambda y API Gateway APIs para ejecutar las tareas necesarias del plano de control. | Cree funciones Lambda y API Gateway independientes APIs para añadir, eliminar y gestionar lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html)Para obtener más información, consulte [Uso de AWS Lambda con Amazon API Gateway](https://docs.aws.amazon.com/lambda/latest/dg/services-apigateway.html) en la *Guía para desarrolladores de AWS Lambda*. | Desarrollador de aplicaciones | 

### Configuración del plano de flujo de trabajo
<a name="configure-the-workflow-plane"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identifique las tareas que deben ejecutar los flujos de trabajo de AWS Step Functions. | Identifique y documente los requisitos detallados del flujo de trabajo de AWS Step Functions para lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html)Asegúrese de que las partes interesadas clave aprueben los requisitos. | Propietario de la aplicación | 
| Cree los flujos de trabajo de AWS Step Functions necesarios. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html) | Desarrollador de aplicaciones, responsable de compilación | 

### Configuración del plano de comunicación
<a name="configure-the-communication-plane"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear temas de Amazon SNS. | Cree temas de Amazon SNS para recibir notificaciones sobre lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html)Para obtener más información, consulte [Creación de un tema de SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) en la *Guía para desarrolladores de Amazon SNS*. | Propietario de la aplicación, arquitecto de la nube | 
| Suscribir puntos de conexión a cada tema de Amazon SNS. | Para recibir los mensajes publicados en un tema de Amazon SNS, tiene que suscribirse a un punto de conexión en cada tema.Para obtener más información, consulte el [tema Suscripción a un tema de Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) en la *Guía para desarrolladores de Amazon SNS*. | Desarrollador de aplicaciones, arquitecto de la nube | 

### Configuración del plano de registro y supervisión
<a name="configure-the-logging-and-monitoring-plane"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Active el registro para cada componente de la solución común para inquilinos. | Active el registro a nivel de componente para cada recurso de la solución de inquilino común que haya creado.Para obtener instrucciones, consulte lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html)Puede consolidar los registros de cada recurso en una cuenta de registro centralizada mediante las políticas de IAM. Para obtener más información, consulte [Registro centralizado y barreras de protección para varias cuentas](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/centralized-logging-and-multiple-account-security-guardrails.html). | Administrador de sistemas de AWS, desarrollador de aplicaciones, administrador de la nube | 

### Aprovisionar e implementar la solución de inquilino común
<a name="provision-and-deploy-the-common-tenant-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree plantillas CloudFormation . | Automatice la implementación y el mantenimiento de la solución Common Tenant completa y todos sus componentes mediante el uso de CloudFormation plantillas.Para obtener más información, consulte la [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html). | Desarrollador, DevOps ingeniero y CloudFormation desarrollador de aplicaciones | 

## Recursos relacionados
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-resources"></a>
+ [Control del acceso a una API de REST con grupos de usuarios de Amazon Cognito como autorizador](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html) (*Guía para desarrolladores de Amazon API Gateway*)
+ [Uso de autorizadores Lambda de API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html) (*Guía para desarrolladores de Amazon API Gateway*)
+ [Grupos de usuarios de Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html) (*Guía para desarrolladores de Amazon Cognito*)
+ [ CloudWatch Consola multicuentas entre regiones](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html) (Guía del * CloudWatch usuario de Amazon*)