

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.

# AWS DevOps Seguridad del agente
<a name="aws-devops-agent-security"></a>

Este documento proporciona información sobre las consideraciones de seguridad, la protección de datos, los controles de acceso y las capacidades de conformidad de AWS DevOps Agent. Utilice esta información para comprender cómo se ha diseñado AWS DevOps Agent para cumplir sus requisitos de seguridad y conformidad.

## Seguridad multicapa
<a name="multi-layered-security"></a>

AWS DevOps El agente implementa la seguridad en varios niveles. Incluso si se conceden permisos más amplios a la función de IAM del agente, el agente aplica sus propios controles de acceso internos para limitar el alcance de sus acciones. Por ejemplo, si un cliente añade una política completa de IAM de acceso a Amazon S3 a la función de IAM del agente, el AWS DevOps agente se asegurará de que solo se lean los registros posteriores al `AWSLogs` prefijo para solucionar problemas.

Recomendamos seguir el principio de privilegios mínimos al configurar los permisos de IAM para el AWS DevOps agente e implementar la seguridad en varios niveles. Una defensa exhaustiva garantiza que ningún error de configuración pueda comprometer la seguridad de su entorno.

## Espacios para agentes
<a name="agent-spaces"></a>

Los espacios de agente sirven como límite de seguridad principal en AWS DevOps Agent. Cada espacio de agente:
+ Funciona de forma independiente con sus propias configuraciones y permisos
+ Define a qué AWS cuentas y recursos puede acceder el agente
+ Establece conexiones con plataformas de terceros

Los Agent Spaces mantienen un aislamiento estricto para garantizar la seguridad y evitar el acceso no deseado a través de diferentes entornos o equipos.

## Procesamiento regional y flujo de datos
<a name="regional-processing-and-data-flow"></a>

AWS DevOps El agente opera a nivel mundial con capacidades de procesamiento regionales. El agente recupera los datos operativos de AWS las regiones de todas las AWS cuentas a las que se ha concedido acceso en el espacio de agente configurado. Esta recopilación de datos entre cuentas multirregionales garantiza un análisis exhaustivo de los incidentes y, al mismo tiempo, respeta los límites geográficos para el procesamiento de las inferencias.

### Uso de Amazon Bedrock e inferencia entre regiones
<a name="amazon-bedrock-usage-and-cross-region-inference"></a>

AWS DevOps El agente seleccionará automáticamente la región óptima dentro de su zona geográfica para procesar sus solicitudes de inferencia. Esto maximiza los recursos informáticos disponibles, la disponibilidad del modelo y ofrece la mejor experiencia al cliente. Sus datos permanecerán almacenados únicamente en la región en la que se creó su espacio de agente; sin embargo, es posible que las solicitudes de entrada y los resultados de salida se procesen fuera de esa región, como se describe en la siguiente lista. Todos los datos se transmitirán cifrados a través de la red segura de Amazon.

AWS DevOps El agente dirigirá sus solicitudes de inferencia de forma segura a los recursos informáticos disponibles en el área geográfica en la que se originó la solicitud, de la siguiente manera:
+ Las solicitudes de inferencia que se originen en la Unión Europea se procesarán dentro de la Unión Europea.
+ Las solicitudes de inferencia que se originen en los Estados Unidos se procesarán en los Estados Unidos.
+ Las solicitudes de inferencia que se originen en Australia se procesarán en Australia.
+ Las solicitudes de inferencia que se originen en Japón se procesarán en Japón.
+ Si una solicitud de inferencia se origina en un área que no figura en la lista, se procesará de forma predeterminada en los Estados Unidos.
+ DevOps Agent y Bedrock no se ven afectados por las políticas de cliente de las Políticas de Control de Servicios (SCPs) o de la Torre de Control, que restringen el contenido de los clientes a regiones específicas
+ Bedrock puede utilizar regiones distintas de la región de origen dentro de su geografía para realizar inferencias sin estado a fin de optimizar el rendimiento y la disponibilidad

## Identity and Access Management
<a name="identity-and-access-management"></a>

### Métodos de autenticación
<a name="authentication-methods"></a>

AWS DevOps El agente proporciona dos métodos de autenticación para iniciar sesión en la aplicación web AWS DevOps Agent Space:
+ **AWS Integración con Identity Center**: el método de autenticación principal utiliza la OAuth versión 2.0 y la autenticación basada en sesiones mediante cookies exclusivas de HTTP. AWS Identity Center puede federarse con proveedores de identidad externos a través de los protocolos OIDC y SAML estándar, incluidos proveedores como Okta, Ping Identity y Microsoft Entra ID. Este método admite la autenticación multifactorial a través de su proveedor de identidad. AWS Identity Center establece de forma predeterminada una duración de sesión de hasta 12 horas y se puede configurar según la duración deseada.
+ **Enlace de autenticación de IAM**: un método alternativo proporciona acceso directo a la aplicación web desde la consola de AWS administración mediante tokens basados en JWT derivados de una sesión de la consola de administración existente. AWS Esta opción es útil para evaluar el AWS DevOps agente antes de implementar la integración completa de Identity Center, así como para obtener acceso administrativo si la aplicación web del AWS DevOps agente deja de ser accesible mediante la autenticación basada en Identity Center. Las sesiones están limitadas a 10 minutos.

### Roles de IAM
<a name="iam-roles"></a>

AWS DevOps El agente usa las funciones de IAM para definir los permisos de acceso:
+ **Función de cuenta principal**: otorga al agente acceso a los recursos de la AWS cuenta en la que se creó el espacio de agentes, así como acceso a las funciones de la cuenta secundaria.
+ **Funciones de cuenta secundarias**: otorga al agente acceso a los recursos de AWS cuentas adicionales conectadas al espacio de agentes.
+ **Función de aplicación web**: otorga a los usuarios acceso a los datos y hallazgos de la investigación del AWS DevOps agente en la aplicación web.

Estas funciones deben configurarse siguiendo el principio de privilegios mínimos y concediendo solo los permisos de solo lectura necesarios para las investigaciones.

## Protección de datos
<a name="data-protection"></a>

### Cifrado de datos
<a name="data-encryption"></a>

AWS DevOps El agente cifra todos los datos de los clientes:
+ **Cifrado en reposo**: todos los datos se cifran con claves AWS administradas.
+ **Cifrado en tránsito**: todos los registros, métricas, elementos de conocimiento, metadatos de los tickets y otros datos recuperados se cifran en tránsito dentro de la red privada del agente y hacia redes externas.

### Almacenamiento y retención de datos
<a name="data-storage-and-retention"></a>

Los datos se almacenan en la región en la que se creó su espacio de agente, mientras que el procesamiento de inferencias puede realizarse dentro de su zona geográfica, tal y como se describe en la sección anterior sobre el uso de Amazon Bedrock.

### Información de identificación personal (PII)
<a name="personal-identifiable-information-pii"></a>

AWS DevOps El agente no filtra la información de identificación personal al resumir los datos recopilados durante las investigaciones, las evaluaciones de las recomendaciones o las respuestas al chat. Se recomienda redactar los datos de PII antes de almacenarlos en los registros de observabilidad.

## Registro de auditoría y diario del agente
<a name="agent-journal-and-audit-logging"></a>

### Diario del agente
<a name="agent-journal"></a>

Tanto las funciones de investigación como de prevención de incidentes mantienen diarios detallados que:
+ Registre cada paso de razonamiento y cada acción realizada
+ Cree una transparencia total en los procesos de toma de decisiones de los agentes
+ Los agentes no pueden modificarlos una vez registrados, lo que minimiza los ataques, como la inyección rápida, al ocultar acciones importantes
+ Incluye todos los mensajes de chat de la página de investigación

### AWS CloudTrail integración
<a name="aws-cloudtrail-integration"></a>

Todas las llamadas a la API del AWS DevOps agente se capturan automáticamente AWS CloudTrail en la AWS cuenta de alojamiento. Con la información recopilada por CloudTrail, puede determinar:
+ La solicitud que se hizo al agente
+ La dirección IP desde la que se realizó la solicitud
+ Quién realizó la solicitud
+ Cuando se realizó

## Protección de inyección rápida
<a name="prompt-injection-protection"></a>

Un ataque de inyección rápida se produce cuando un atacante inserta instrucciones maliciosas en datos externos, como una página web o un documento, que posteriormente procesará un sistema de IA generativa. AWS DevOps El agente consume muchas fuentes de datos de forma nativa como parte de sus operaciones normales, incluidos los registros, las etiquetas de recursos y otros datos operativos. AWS DevOps Agent protege contra los ataques de inyección inmediata mediante las siguientes medidas de seguridad, pero es importante garantizar que todas las fuentes de datos conectadas y el acceso de los usuarios a esas fuentes de datos sean confiables. Consulte la sección sobre el [modelo de responsabilidad compartida](#aws-devops-agent-security) para obtener más información.

Garantías de inyección rápida:
+ **Capacidades de escritura limitadas**: las herramientas de las que dispone el agente no pueden modificar los recursos, con la excepción de abrir tickets y casos de soporte. Esto evita que instrucciones malintencionadas modifiquen la infraestructura o las aplicaciones.
+ **Control de los límites de la cuenta**: el AWS DevOps agente solo opera dentro de los límites permitidos por las funciones asignadas al agente en la cuenta principal y en la AWS cuenta secundaria conectada. El agente no puede acceder a los recursos ni modificarlos fuera del ámbito configurado.
+ **Protecciones de seguridad mediante IA: el AWS DevOps agente utiliza modelos con protecciones** de nivel 3 de seguridad mediante IA (ASL-3). Estas protecciones incluyen clasificadores que detectan y previenen los ataques de inyección inmediata antes de que puedan afectar al comportamiento del agente.
+ Registro de **auditoría inmutable**: el diario del agente registra cada paso de razonamiento y cada acción realizada. El agente no puede modificar las entradas del diario una vez registradas, lo que evita que los ataques de inyección inmediata oculten las acciones maliciosas.

Si bien AWS DevOps Agent ofrece varios niveles de protección contra los ataques de inyección inmediata, algunas configuraciones pueden aumentar el riesgo:
+ **Herramientas de servidor MCP personalizadas**: la función bring-your-own MCP permite introducir herramientas personalizadas en el agente, lo que puede ofrecer oportunidades adicionales para una rápida inyección. Es posible que las herramientas personalizadas no tengan los mismos controles de seguridad que las herramientas de AWS DevOps agente nativas, y las instrucciones malintencionadas podrían aprovechar estas herramientas de forma no deseada. Consulte la sección sobre el [modelo de responsabilidad compartida](#aws-devops-agent-security) para obtener más información.
+ **Ataques de usuarios autorizados**: los usuarios que están autorizados a operar dentro del límite de la AWS cuenta o de las herramientas conectadas tienen más probabilidades de intentar atacar al agente. Es posible que estos usuarios puedan modificar las fuentes de datos que consume el agente, como registros o etiquetas de recursos, lo que facilita la incrustación de instrucciones maliciosas que el agente procesará.

Para mitigar estos riesgos:

1. Revise y pruebe detenidamente los servidores MCP personalizados antes de implementarlos en Agent Spaces.

   1. Asegúrese de que solo se les permita realizar acciones de solo lectura

   1. Compruebe que los usuarios de las herramientas externas a las que acceden los servidores MCP sean entidades de confianza, ya que AWS DevOps los agentes que interactúan con el MCP se basan en la relación de confianza implícita que se establece entre estos usuarios de la herramienta y el agente AWS DevOps 

1. Aplique el principio del privilegio mínimo al conceder a los usuarios el acceso a los sistemas que proporcionan datos al agente

1. Audite periódicamente qué servidores MCP están conectados a sus Agent Spaces

1. Dado que cualquier contenido recuperado de una lista de permitidos URLs podría intentar manipular el comportamiento del agente, incluya únicamente fuentes confiables en su lista de permitidos.

## Seguridad de integración
<a name="integration-security"></a>

AWS DevOps El agente admite varios tipos de integración, cada uno con su propio modelo de seguridad:
+ **Integraciones bidireccionales nativas**: integraciones integradas que pueden enviar datos al agente y recibir actualizaciones del agente. Utiliza los métodos de autenticación del proveedor
+ Servidores **MCP: servidores** del protocolo de contexto de modelo remoto que utilizan flujos de autenticación OAuth 2.0 y claves de API para comunicarse de forma segura con sistemas externos.
+ Activadores de **webhook: activadores** de investigación desde servicios remotos, como tickets o sistemas de observabilidad. Los webhooks utilizan un código de autenticación de mensajes basado en hash (HMAC) por motivos de seguridad.
+ **Comunicación saliente**: las integraciones como Slack y los sistemas de venta de entradas reciben actualizaciones del agente, pero aún no admiten la comunicación bidireccional.

### Proveedores de registro
<a name="registration-providers"></a>

Algunas herramientas externas se autentican a nivel de cuenta y se comparten entre todos los espacios de agentes de la cuenta. Al registrar estas herramientas, se autentica una vez a nivel de cuenta y, a continuación, cada Agent Space puede conectarse a recursos específicos dentro de esa conexión registrada.

Las siguientes herramientas utilizan el registro a nivel de cuenta:
+ **GitHub**— Utiliza el OAuth flujo para la autenticación. Tras registrarse GitHub a nivel de cuenta, cada espacio de agente puede conectarse a repositorios específicos de su GitHub organización.
+ **Dynatrace**: utiliza OAuth la autenticación mediante token. Tras registrar Dynatrace a nivel de cuenta, cada espacio de agente puede conectarse a entornos o configuraciones de monitoreo específicos de Dynatrace.
+ **Slack**: utiliza la autenticación mediante token. OAuth Tras registrar Slack a nivel de cuenta, cada espacio de agente puede conectarse a canales y canales específicos de Slack.
+ **Datadog**: usa MCP con flow para la autenticación. OAuth Tras registrar Datadog a nivel de cuenta, cada espacio de agente puede conectarse a recursos de monitoreo específicos de Datadog.
+ **New Relic**: utiliza la autenticación mediante clave de API. Tras registrar New Relic a nivel de cuenta, cada espacio de agente puede conectarse a configuraciones de monitoreo específicas de New Relic.
+ **Splunk**: utiliza la autenticación mediante token portador. Tras registrar Splunk a nivel de cuenta, cada espacio de agente puede conectarse a fuentes de datos específicas de Splunk.
+ **GitLab**— Utiliza la autenticación mediante token de acceso. Tras registrarse GitLab a nivel de cuenta, cada espacio de agente puede conectarse a GitLab repositorios específicos.
+ **ServiceNow**— Utiliza la key/token autenticación OAuth del cliente. Tras registrarse ServiceNow a nivel de cuenta, cada espacio de agente puede conectarse a ServiceNow instancias o colas de tickets específicas.
+ **Servidores MCP remotos accesibles al público en general**: utilice el OAuth flujo para la autenticación. Tras registrar un servidor MCP remoto a nivel de cuenta, cada espacio de agente puede conectarse a los recursos específicos expuestos por ese servidor.

## Conectividad de red
<a name="network-connectivity"></a>

AWS DevOps El agente se conecta a los sistemas de terceros y a los servidores MCP remotos para realizar investigaciones y otras operaciones.

### Tráfico entrante del AWS DevOps agente a sus sistemas
<a name="inbound-traffic-from-aws-devops-agent-to-your-systems"></a>

AWS DevOps El agente inicia las conexiones salientes a los sistemas de terceros y a los servidores MCP remotos, que llegan como tráfico entrante a su infraestructura. La forma de proteger este tráfico depende de cómo estén alojadas las herramientas:
+ **Herramientas alojadas de forma privada**: si se puede acceder a sus herramientas desde una AWS VPC, puede AWS DevOps usar las conexiones *privadas del agente* para mantener el tráfico aislado AWS de las redes y fuera de la Internet pública. Para obtener más información, consulte [Conexión a herramientas alojadas de forma privada](configuring-capabilities-for-aws-devops-agent-connecting-to-privately-hosted-tools.md).
+ **Herramientas alojadas públicamente**: si se puede acceder a sus herramientas a través de la Internet pública y utilizan reglas de firewall o listas de IP permitidas, debe permitir el tráfico entrante desde las siguientes AWS DevOps direcciones IP de origen del agente:
  + Asia-Pacífico (Sídney) (ap-southeast-2)
    + `13.237.95.197`
    + `13.238.84.102`
  + Asia-Pacífico (Tokio) (ap-northeast-1)
    + `13.192.12.233`
    + `35.74.181.230`
    + `57.183.50.158`
  + Europa (Fráncfort) (eu-central-1)
    + `18.158.110.140`
    + `52.57.96.160`
    + `52.59.55.56`
  + Europa (Irlanda) (eu-west-1)
    + `34.251.85.24`
    + `52.30.157.157`
    + `52.51.192.222`
  + Este de EE. UU. (Norte de Virginia) (us-east-1)
    + `34.228.181.128`
    + `44.219.176.187`
    + `54.226.244.221`
  + Oeste de EE. UU. (Oregón) (us-west-2)
    + `34.212.16.133`
    + `52.89.67.212`
    + `54.187.135.61`

### Tráfico saliente de su AWS DevOps VPC al agente
<a name="outbound-traffic-from-your-vpc-to-aws-devops-agent"></a>

Para el tráfico saliente de la AWS VPC AWS DevOps al agente (por ejemplo, [Invocar al DevOps agente a través de Webhook](configuring-capabilities-for-aws-devops-agent-invoking-devops-agent-through-webhook.md) mediante), puede utilizar los puntos de enlace de la VPC para mantener este tráfico de red aislado de las redes. AWS Para obtener más información, consulte [Puntos de enlace de la VPC (AWS PrivateLink)](aws-devops-agent-security-vpc-endpoints-aws-privatelink.md).

## Modelo de responsabilidad compartida
<a name="shared-responsibility-model"></a>

### AWS responsabilidades
<a name="aws-responsibilities"></a>

AWS es responsable de:
+ Mantener la seguridad de los datos recuperados por el agente
+ Proteger las herramientas nativas disponibles para que las utilice el agente
+ Proteger la infraestructura en la que se ejecuta el AWS DevOps agente

### Responsabilidades del cliente
<a name="customer-responsibilities"></a>

Los clientes son responsables de:
+ Administrar el acceso de los usuarios al espacio de agentes
+ Limitar el acceso a los usuarios de confianza a los sistemas externos que proporcionan información al agente, como los servicios y recursos que generan registros, CloudTrail eventos, tickets y más, que pueden utilizarse para intentar realizar una inyección rápida maliciosa.
+ Asegúrese de que todas las fuentes de datos conectadas tengan datos confiables que probablemente no se utilicen para intentar ataques de inyección rápida
+ Garantizar que las integraciones de servidores bring-your-own MCP funcionen de forma segura
+ Garantizar que las funciones de IAM asignadas al agente tengan el alcance adecuado
+ Redactar los datos de PII antes de almacenarlos en los registros de observabilidad y otras fuentes de datos de los agentes
+ Seguir la práctica recomendada de conceder únicamente permisos de solo lectura a las fuentes de datos conectadas, incluidos los servidores MCP bring-your-own

## Uso de datos
<a name="data-usage"></a>

AWS no utiliza los datos de los agentes, los mensajes de chat ni los datos de fuentes de datos integradas para entrenar modelos o mejorar el producto. El espacio de AWS DevOps agentes utiliza los comentarios de los clientes sobre el producto para mejorar las respuestas y las investigaciones del agente, pero AWS no los utiliza para mejorar el servicio en sí.

## Conformidad
<a name="compliance"></a>

En la versión preliminar, AWS DevOps Agent no cumple con estándares como SOC 2, PCI-DSS, ISO 27001 o FedRAMP. AWS anunciará qué certificaciones de conformidad estarán disponibles más adelante.

# DevOps Permisos de IAM para agentes
<a name="aws-devops-agent-security-devops-agent-iam-permissions"></a>

AWS DevOps El agente utiliza acciones de AWS Identity and Access Management (IAM) específicas del servicio para controlar el acceso a sus funciones y capacidades. Estas acciones determinan lo que los usuarios pueden hacer en la consola del AWS DevOps agente y en la aplicación web Operator. Esto es independiente de los permisos de la API de AWS servicio que el propio agente utiliza para investigar sus recursos.

Para obtener más información sobre cómo limitar el acceso de los agentes, consulte [Limitar el acceso de los agentes a una AWS cuenta.](https://docs.aws.amazon.com/devopsagent/latest/userguide/aws-devops-agent-security-limiting-agent-access-in-an-aws-account.html)

## Acciones de administración del espacio de agentes
<a name="agent-space-management-actions"></a>

Estas acciones controlan el acceso a la configuración y la administración de Agent Space:
+ **aidevops: GetAgentSpace** — Permite a los usuarios ver los detalles de un Agent Space, incluida su configuración, estado y cuentas asociadas. Los usuarios necesitan este permiso para acceder a un espacio de agentes en la consola de AWS administración.
+ **aidevops: GetAssociation** — Permite a los usuarios ver los detalles sobre una asociación de cuentas específica, incluida la configuración del rol de IAM y el estado de la conexión.
+ **aidevops: ListAssociations** — Permite a los usuarios enumerar todas las asociaciones de AWS cuentas configuradas para un Agent Space, incluidas las cuentas principales y secundarias.

## Acciones de investigación y ejecución
<a name="investigation-and-execution-actions"></a>

Estas acciones controlan el acceso a las funciones de investigación de incidentes:
+ **aidevops: ListExecutions** — Permite a los usuarios ver los metadatos de ejecución, incluidos el ID, el estado y más, para realizar investigaciones, mitigaciones, evaluaciones y conversaciones de chat asociadas a una tarea.
+ **aidevops: ListJournalRecords** — Permite a los usuarios acceder a registros detallados que muestran el razonamiento del agente, las medidas adoptadas y las fuentes de datos consultadas durante una investigación, una mitigación, una evaluación y una conversación de chat. Esto es útil para entender cómo el agente llegó a sus conclusiones.

## Acciones de administración del chat
<a name="chat-management-actions"></a>

El chat requiere los siguientes permisos de IAM para funcionar:
+ **aidevops: ListChats** — Permite a los usuarios enumerar el historial de conversaciones de chat y acceder a él.
+ **aidevops: CreateChat** — Permite a los usuarios crear nuevas conversaciones de chat.
+ **aidevops: SendMessage** — Permite a los usuarios enviar consultas y recibir respuestas en streaming.

## Acciones de topología y descubrimiento
<a name="topology-and-discovery-actions"></a>

Estas acciones controlan el acceso a las funciones de mapeo de recursos de la aplicación:
+ **aidevops: DiscoverTopology** — Permite a los usuarios activar el descubrimiento y el mapeo de la topología de un espacio de agentes. Esta acción inicia el proceso de escaneo de AWS cuentas y creación de la topología de recursos de la aplicación.

## Acciones de prevención y recomendación
<a name="prevention-and-recommendation-actions"></a>

Estas acciones controlan el acceso a la función de prevención:
+ **aidevops: ListGoals** — Permite a los usuarios ver las metas y los objetivos de prevención por los que el agente está trabajando en función de los patrones de incidentes recientes.
+ **aidevops: ListRecommendations** — Permite a los usuarios ver todas las recomendaciones generadas por la función de prevención, incluidas su prioridad y categoría.
+ **aidevops: GetRecommendation** — Permite a los usuarios ver información detallada sobre una recomendación específica, incluidos los incidentes que se habrían evitado y una guía de implementación.

## Acciones de gestión de tareas pendientes
<a name="backlog-task-management-actions"></a>

Estas acciones controlan la capacidad de gestionar las recomendaciones como tareas pendientes:
+ **aidevops: CreateBacklogTask** — Permite a los usuarios crear una tarea de investigación de incidentes o de evaluación de la prevención.
+ **aidevops: UpdateBacklogTask** — Permite a los usuarios aprobar un plan de mitigación o cancelar una investigación o evaluación en curso.
+ **aidevops: GetBacklogTask** — Permite a los usuarios recuperar detalles sobre una tarea específica.
+ **aidevops: ListBacklogTasks** — Permite a los usuarios enumerar las tareas de un Agent Space, filtrándolas por tipo de tarea, estado, prioridad o hora de creación.

## Acciones de gestión del conocimiento
<a name="knowledge-management-actions"></a>

Estas acciones controlan la capacidad de añadir y gestionar conocimientos personalizados que el agente puede utilizar durante las investigaciones:
+ **aidevops: CreateKnowledgeItem** — Permite a los usuarios añadir elementos de conocimiento personalizados, como habilidades, guías de solución de problemas o información específica de la aplicación, a los que el agente debería consultar.
+ **aidevops: ListKnowledgeItems** — Permite a los usuarios ver todos los elementos de conocimiento configurados para un espacio de agente.
+ **aidevops: GetKnowledgeItem** — Permite a los usuarios recuperar los detalles de un elemento de conocimiento específico.
+ **aidevops: UpdateKnowledgeItem** — Permite a los usuarios modificar los elementos de conocimiento existentes para mantener la información actualizada.
+ **aidevops: DeleteKnowledgeItem** — Permite a los usuarios eliminar los elementos de conocimiento que ya no son relevantes.

## AWS Support integration actions
<a name="aws-support-integration-actions"></a>

Estas acciones controlan la integración con los casos AWS de Support:
+ **aidevops: InitiateChatForCase** — Permite a los usuarios iniciar una sesión de chat con AWS Support directamente desde una investigación, proporcionando automáticamente el contexto del incidente.
+ **aidevops: EndChatForCase** — Permite a los usuarios finalizar una sesión de chat activa sobre un caso de AWS Support.
+ **aidevops: DescribeSupportLevel** — Permite a los usuarios comprobar el nivel del plan de AWS Support de la cuenta para determinar las opciones de soporte disponibles.

## Acciones de uso y monitoreo
<a name="usage-and-monitoring-actions"></a>

Estas acciones controlan el acceso a la información de uso:
+ **aidevops: GetAccountUsage** — Permite a los usuarios ver la cuota mensual del AWS DevOps agente en cuanto a horas de investigación, horas de evaluación preventiva y solicitudes de chat, así como el uso del mes en curso.

## Ejemplos comunes de políticas de IAM
<a name="common-iam-policy-examples"></a>

### Política de administrador
<a name="administrator-policy"></a>

Esta política otorga acceso completo a todas las funciones AWS DevOps del agente:

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "aidevops:*",
      "Resource": "*"
    }
  ]
}
```

### Política del operador
<a name="operator-policy"></a>

Esta política otorga acceso a las funciones de investigación y prevención sin capacidades administrativas:

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aidevops:GetAgentSpace",
        "aidevops:InvokeAgent",
        "aidevops:ListExecutions",
        "aidevops:ListJournalRecords",
        "aidevops:ListAssociations",
        "aidevops:GetAssociation",
        "aidevops:DiscoverTopology",
        "aidevops:ListRecommendations",
        "aidevops:GetRecommendation",
        "aidevops:CreateBacklogTask",
        "aidevops:UpdateBacklogTask",
        "aidevops:GetBacklogTask",
        "aidevops:ListBacklogTasks",
        "aidevops:ListKnowledgeItems",
        "aidevops:GetKnowledgeItem",
        "aidevops:InitiateChatForCase",
        "aidevops:EndChatForCase",
        "aidevops:ListChats",
        "aidevops:CreateChat",
        "aidevops:SendMessage",
        "aidevops:ListGoals",
        "aidevops:CreateKnowledgeItem",
        "aidevops:UpdateKnowledgeItem",
        "aidevops:DescribeSupportLevel",
        "aidevops:ListPendingMessages"
      ],
      "Resource": "*"
    }
  ]
}
```

### Política de solo lectura
<a name="read-only-policy"></a>

Esta política otorga acceso de solo lectura a las investigaciones y recomendaciones:

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aidevops:GetAgentSpace",
        "aidevops:ListAssociations",
        "aidevops:GetAssociation",
        "aidevops:ListExecutions",
        "aidevops:ListJournalRecords",
        "aidevops:ListRecommendations",
        "aidevops:GetRecommendation",
        "aidevops:ListBacklogTasks",
        "aidevops:GetBacklogTask",
        "aidevops:ListKnowledgeItems",
        "aidevops:GetKnowledgeItem",
        "aidevops:GetAccountUsage"
      ],
      "Resource": "*"
    }
  ]
}
```

## Uso de funciones vinculadas al servicio para el agente AWS DevOps
<a name="using-service-linked-roles-for-aws-devops-agent"></a>

AWS DevOps [El agente utiliza AWS funciones vinculadas al servicio Identity and Access Management (IAM).](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) Un rol vinculado a un servicio es un tipo único de rol de IAM que está vinculado directamente al agente. AWS DevOps El AWS DevOps agente predefine las funciones vinculadas al servicio e incluyen todos los permisos que el servicio requiere para llamar a otros AWS servicios en su nombre.

### Permisos de roles vinculados a servicios
<a name="service-linked-role-permissions"></a>

El rol vinculado al servicio `AWSServiceRoleForAIDevOps` confía en el principal del servicio `aidevops.amazonaws.com` para asumir el rol.

El rol usa la política administrada `AWSServiceRoleForAIDevOpsPolicy` con los siguientes permisos:
+ `cloudwatch:PutMetricData`— Publica las métricas de uso en el espacio de `AWS/AIDevOps` CloudWatch nombres. Se rige por una `cloudwatch:namespace` condición que permite solo el espacio de nombres. `AWS/AIDevOps`
+ `vpc-lattice:CreateResourceGateway`— Cree pasarelas de recursos de VPC Lattice para conexiones privadas. Establece una `aws:RequestTag/AWSAIDevOpsManaged` condición para que el servicio solo pueda crear pasarelas de recursos que contengan la etiqueta. `AWSAIDevOpsManaged`
+ `vpc-lattice:TagResource`— Etiquete las pasarelas de recursos de VPC Lattice. Limitado por una condición. `aws:RequestTag/AWSAIDevOpsManaged`
+ `vpc-lattice:DeleteResourceGateway`— Eliminar las pasarelas de recursos de VPC Lattice. Definido por una `aws:ResourceTag/AWSAIDevOpsManaged` condición, por lo que el servicio solo puede eliminar las pasarelas de recursos que haya creado.
+ `vpc-lattice:GetResourceGateway`— Recuperar información sobre las pasarelas de recursos de VPC Lattice. Se basa en una `aws:ResourceTag/AWSAIDevOpsManaged` condición para que el servicio solo pueda leer las pasarelas de recursos que haya creado.
+ `ec2:DescribeVpcs`,`ec2:DescribeSubnets`, `ec2:DescribeSecurityGroups` — Recupera información sobre los recursos de red de VPC necesarios para configurar las puertas de enlace de recursos. Estas acciones de solo lectura se aplican a todos los recursos de la VPC porque la API de EC2 no admite permisos a nivel de recursos para las llamadas de Describe.
+ `iam:CreateServiceLinkedRole`— Cree la función vinculada al servicio VPC Lattice necesaria para las operaciones de la puerta de enlace de recursos. Este permiso está limitado únicamente al director del `vpc-lattice.amazonaws.com` servicio y no se puede utilizar para crear funciones vinculadas al servicio para ningún otro servicio.

### Creación del rol vinculado al servicio
<a name="creating-the-service-linked-role"></a>

No necesita crear manualmente el rol vinculado al servicio `AWSServiceRoleForAIDevOps`. Cuando empiece a utilizar AWS DevOps Agent, el servicio le creará el rol vinculado al servicio.

Para permitir que el servicio cree el rol en su nombre, debe tener el `iam:CreateServiceLinkedRole` permiso. Recomendamos limitar el alcance de este permiso con una `iam:AWSServiceName` condición `aidevops.amazonaws.com` para seguir el principio del privilegio mínimo. Para obtener más información, consulte [Permisos de rol vinculado al servicio](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions).

### Edición del rol vinculado al servicio
<a name="editing-the-service-linked-role"></a>

No puede editar el rol vinculado a servicio `AWSServiceRoleForAIDevOps`. Una vez creado el rol, no puede cambiarle el nombre, ya que varias entidades pueden hacer referencia al rol por su nombre. Sin embargo, puede editar la descripción del rol mediante IAM. Para obtener más información, consulte [Edición de un rol vinculado a un servicio](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role).

### Eliminación del rol vinculado a un servicio
<a name="deleting-the-service-linked-role"></a>

Si ya no necesita usar el AWS DevOps agente, le recomendamos que elimine el rol vinculado al `AWSServiceRoleForAIDevOps` servicio. Antes de poder eliminar el rol, primero debe eliminar todas las conexiones privadas configuradas en su espacio de agente. Al eliminar el rol vinculado al servicio, no se eliminan automáticamente las puertas de enlace de recursos de VPC Lattice etiquetadas con las `AWSAIDevOpsManaged` que el servicio creó anteriormente. Debe eliminar estas pasarelas de recursos manualmente si ya no las necesita. Para obtener más información, consulte [Eliminar un rol vinculado a un servicio](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role).

## AWS Políticas administradas para el agente AWS DevOps
<a name="aws-managed-policies-for-aws-devops-agent"></a>

AWS aborda muchos casos de uso comunes al proporcionar políticas de IAM independientes que son creadas y administradas por. AWS Estas políticas AWS gestionadas conceden los permisos necesarios para casos de uso comunes, de modo que no tenga que investigar qué permisos son necesarios. Para obtener más información, consulte [las políticas AWS administradas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) en la \$1Guía del usuario de IAM\$1.

Las siguientes políticas AWS gestionadas, que puede adjuntar a los usuarios de su cuenta, son específicas del agente. AWS DevOps 

### AIDevOpsAgentReadOnlyAccess
<a name="aidevopsagentreadonlyaccess"></a>

Proporciona acceso de solo lectura a Amazon DevOps Agent a través de la consola AWS de administración

```
{
	"Version": "2012-10-17",		 	 	 		 	 	 
	"Statement": [
		{
			"Sid": "AIDevOpsAgentReadOnlyAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:Get*",
				"aidevops:List*",
				"aidevops:SearchServiceAccessibleResource"
			],
			"Resource": "*"
		}
	]
}
```

### AIDevOpsAgentFullAccess
<a name="aidevopsagentfullaccess"></a>

Proporciona acceso completo a Amazon DevOps Agent a través de la consola AWS de administración

```
{
	"Version": "2012-10-17",		 	 	 		 	 	 
	"Statement": [
		{
			"Sid": "AIDevOpsAgentSpaceAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:CreateAgentSpace",
				"aidevops:DeleteAgentSpace",
				"aidevops:GetAgentSpace",
				"aidevops:ListAgentSpaces",
				"aidevops:UpdateAgentSpace"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsServiceAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:DeregisterService",
				"aidevops:GetService",
				"aidevops:ListServices",
				"aidevops:RegisterService",
				"aidevops:SearchServiceAccessibleResource"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsAssociationAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:AssociateService",
				"aidevops:DisassociateService",
				"aidevops:GetAssociation",
				"aidevops:ListAssociations",
				"aidevops:UpdateAssociation",
				"aidevops:ValidateAwsAssociations"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsWebhookAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:ListWebhooks"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsOperatorAppAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:DisableOperatorApp",
				"aidevops:EnableOperatorApp",
				"aidevops:GetOperatorApp",
				"aidevops:UpdateOperatorAppIdpConfig"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsKnowledgeAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:CreateKnowledgeItem",
				"aidevops:DeleteKnowledgeItem",
				"aidevops:GetKnowledgeItem",
				"aidevops:ListKnowledgeItems",
				"aidevops:ListKnowledgeItemVersions",
				"aidevops:UpdateKnowledgeItem"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsBacklogAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:CreateBacklogTask",
				"aidevops:GetBacklogTask",
				"aidevops:ListBacklogTasks",
				"aidevops:ListGoals",
				"aidevops:UpdateBacklogTask",
				"aidevops:UpdateGoal"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsRecommendationAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:GetRecommendation",
				"aidevops:ListRecommendations",
				"aidevops:UpdateRecommendation"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsAgentChatAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:CreateChat",
				"aidevops:ListChats",
				"aidevops:ListPendingMessages",
				"aidevops:SendMessage"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsJournalAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:ListExecutions",
				"aidevops:ListJournalRecords"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsTopologyAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:DiscoverTopology"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsSupportAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:DescribeSupportLevel",
				"aidevops:EndChatForCase",
				"aidevops:InitiateChatForCase"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsUsageAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:GetAccountUsage"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsTaggingAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:ListTagsForResource",
				"aidevops:TagResource",
				"aidevops:UntagResource"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsVendedLogs",
			"Effect": "Allow",
			"Action": [
				"aidevops:AllowVendedLogDeliveryForResource"
			],
			"Resource": "*"
		}
	]
}
```

### AIDevOpsOperatorAppAccessPolicy
<a name="aidevopsoperatorappaccesspolicy"></a>

Proporciona acceso para usar la aplicación web AWS DevOps del operador como espacio de agente.

```
{
	"Version": "2012-10-17",		 	 	 		 	 	 
	"Statement": [
		{
			"Sid": "AllowOperatorAgentSpaceActions",
			"Effect": "Allow",
			"Action": [
				"aidevops:GetAgentSpace",
				"aidevops:GetAssociation",
				"aidevops:ListAssociations",
				"aidevops:CreateBacklogTask",
				"aidevops:GetBacklogTask",
				"aidevops:UpdateBacklogTask",
				"aidevops:ListBacklogTasks",
				"aidevops:ListJournalRecords",
				"aidevops:DiscoverTopology",
				"aidevops:ListGoals",
				"aidevops:ListRecommendations",
				"aidevops:ListExecutions",
				"aidevops:GetRecommendation",
				"aidevops:UpdateRecommendation",
				"aidevops:CreateKnowledgeItem",
				"aidevops:ListKnowledgeItems",
				"aidevops:ListKnowledgeItemVersions",
				"aidevops:GetKnowledgeItem",
				"aidevops:UpdateKnowledgeItem",
				"aidevops:DeleteKnowledgeItem",
				"aidevops:ListPendingMessages",
				"aidevops:InitiateChatForCase",
				"aidevops:EndChatForCase",
				"aidevops:DescribeSupportLevel",
				"aidevops:ListChats",
				"aidevops:CreateChat",
				"aidevops:SendMessage"
			],
			"Resource": "arn:aws:aidevops:*:*:agentspace/${aws:PrincipalTag/AgentSpaceId}",
			"Condition": {
				"StringEquals": {
					"aws:ResourceAccount": "${aws:PrincipalAccount}"
				}
			}
		},
		{
			"Sid": "AllowOperatorAccountActions",
			"Effect": "Allow",
			"Action": [
				"aidevops:GetAccountUsage"
			],
			"Resource": "*",
			"Condition": {
				"StringEquals": {
					"aws:ResourceAccount": "${aws:PrincipalAccount}"
				}
			}
		},
		{
			"Sid": "AllowSupportOperatorActions",
			"Effect": "Allow",
			"Action": [
				"support:DescribeCases",
				"support:InitiateChatForCase",
				"support:DescribeSupportLevel"
			],
			"Resource": "*",
			"Condition": {
				"StringEquals": {
					"aws:ResourceAccount": "${aws:PrincipalAccount}"
				}
			}
		}
	]
}
```

### AIDevOpsAgentAccessPolicy
<a name="aidevopsagentaccesspolicy"></a>

Proporciona los permisos necesarios para que el AWS DevOps agente lleve a cabo investigaciones y analice AWS los recursos de los clientes.

```
{
    "Version": "2012-10-17",		 	 	 		 	 	 
    "Statement": [
        {
            "Sid": "AIOPSServiceAccess",
            "Effect": "Allow",
            "Action": [
                "access-analyzer:GetAnalyzer",
                "access-analyzer:List*",
                "acm-pca:Describe*",
                "acm-pca:GetCertificate",
                "acm-pca:GetCertificateAuthorityCertificate",
                "acm-pca:GetCertificateAuthorityCsr",
                "acm-pca:List*",
                "acm:DescribeCertificate",
                "acm:GetAccountConfiguration",
                "aidevops:GetKnowledgeItem",
                "aidevops:ListKnowledgeItems",
                "airflow:List*",
                "amplify:GetApp",
                "amplify:GetBranch",
                "amplify:GetDomainAssociation",
                "amplify:List*",
                "aoss:BatchGetCollection",
                "aoss:BatchGetLifecyclePolicy",
                "aoss:BatchGetVpcEndpoint",
                "aoss:GetAccessPolicy",
                "aoss:GetSecurityConfig",
                "aoss:GetSecurityPolicy",
                "aoss:List*",
                "appconfig:GetApplication",
                "appconfig:GetConfigurationProfile",
                "appconfig:GetEnvironment",
                "appconfig:GetHostedConfigurationVersion",
                "appconfig:List*",
                "appflow:Describe*",
                "appflow:List*",
                "application-autoscaling:Describe*",
                "application-signals:BatchGetServiceLevelObjectiveBudgetReport",
                "application-signals:GetService",
                "application-signals:GetServiceLevelObjective",
                "application-signals:List*",
                "applicationinsights:Describe*",
                "applicationinsights:List*",
                "apprunner:Describe*",
                "apprunner:List*",
                "appstream:Describe*",
                "appstream:List*",
                "appsync:GetApiAssociation",
                "appsync:GetDataSource",
                "appsync:GetDomainName",
                "appsync:GetFunction",
                "appsync:GetGraphqlApi",
                "appsync:GetGraphqlApiEnvironmentVariables",
                "appsync:GetIntrospectionSchema",
                "appsync:GetResolver",
                "appsync:GetSourceApiAssociation",
                "appsync:List*",
                "aps:Describe*",
                "aps:List*",
                "arc-zonal-shift:GetManagedResource",
                "arc-zonal-shift:List*",
                "athena:GetCapacityAssignmentConfiguration",
                "athena:GetCapacityReservation",
                "athena:GetDataCatalog",
                "athena:GetNamedQuery",
                "athena:GetPreparedStatement",
                "athena:GetWorkGroup",
                "athena:List*",
                "auditmanager:GetAssessment",
                "auditmanager:List*",
                "autoscaling:Describe*",
                "backup-gateway:GetHypervisor",
                "backup-gateway:List*",
                "backup:Describe*",
                "backup:GetBackupPlan",
                "backup:GetBackupSelection",
                "backup:GetBackupVaultAccessPolicy",
                "backup:GetBackupVaultNotifications",
                "backup:GetRestoreTestingPlan",
                "backup:GetRestoreTestingSelection",
                "backup:List*",
                "batch:DescribeComputeEnvironments",
                "batch:DescribeJobQueues",
                "batch:DescribeSchedulingPolicies",
                "batch:List*",
                "bedrock:GetAgent",
                "bedrock:GetAgentActionGroup",
                "bedrock:GetAgentAlias",
                "bedrock:GetAgentKnowledgeBase",
                "bedrock:GetDataSource",
                "bedrock:GetGuardrail",
                "bedrock:GetKnowledgeBase",
                "bedrock:List*",
                "budgets:Describe*",
                "budgets:List*",
                "ce:Describe*",
                "ce:GetAnomalyMonitors",
                "ce:GetAnomalySubscriptions",
                "ce:List*",
                "chatbot:Describe*",
                "chatbot:GetMicrosoftTeamsChannelConfiguration",
                "chatbot:List*",
                "cleanrooms-ml:GetTrainingDataset",
                "cleanrooms-ml:List*",
                "cleanrooms:GetAnalysisTemplate",
                "cleanrooms:GetCollaboration",
                "cleanrooms:GetConfiguredTable",
                "cleanrooms:GetConfiguredTableAnalysisRule",
                "cleanrooms:GetConfiguredTableAssociation",
                "cleanrooms:GetMembership",
                "cleanrooms:List*",
                "cloudformation:Describe*",
                "cloudformation:GetResource",
                "cloudformation:GetStackPolicy",
                "cloudformation:GetTemplate",
                "cloudformation:List*",
                "cloudfront:Describe*",
                "cloudfront:GetCachePolicy",
                "cloudfront:GetCloudFrontOriginAccessIdentity",
                "cloudfront:GetContinuousDeploymentPolicy",
                "cloudfront:GetDistribution",
                "cloudfront:GetDistributionConfig",
                "cloudfront:GetFunction",
                "cloudfront:GetKeyGroup",
                "cloudfront:GetMonitoringSubscription",
                "cloudfront:GetOriginAccessControl",
                "cloudfront:GetOriginRequestPolicy",
                "cloudfront:GetPublicKey",
                "cloudfront:GetRealtimeLogConfig",
                "cloudfront:GetResponseHeadersPolicy",
                "cloudfront:List*",
                "cloudtrail:Describe*",
                "cloudtrail:GetChannel",
                "cloudtrail:GetEventConfiguration",
                "cloudtrail:GetEventDataStore",
                "cloudtrail:GetEventSelectors",
                "cloudtrail:GetInsightSelectors",
                "cloudtrail:GetQueryResults",
                "cloudtrail:GetResourcePolicy",
                "cloudtrail:GetTrail",
                "cloudtrail:GetTrailStatus",
                "cloudtrail:List*",
                "cloudtrail:LookupEvents",
                "cloudtrail:StartQuery",
                "cloudwatch:Describe*",
                "cloudwatch:GenerateQuery",
                "cloudwatch:GetDashboard",
                "cloudwatch:GetInsightRuleReport",
                "cloudwatch:GetMetricData",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:GetMetricStream",
                "cloudwatch:GetService",
                "cloudwatch:GetServiceLevelObjective",
                "cloudwatch:List*",
                "codeartifact:Describe*",
                "codeartifact:GetDomainPermissionsPolicy",
                "codeartifact:GetRepositoryPermissionsPolicy",
                "codeartifact:List*",
                "codebuild:BatchGetFleets",
                "codebuild:List*",
                "codecommit:GetRepository",
                "codecommit:GetRepositoryTriggers",
                "codedeploy:BatchGetDeployments",
                "codedeploy:BatchGetDeploymentTargets",
                "codedeploy:GetApplication",
                "codedeploy:GetDeploymentConfig",
                "codedeploy:GetDeploymentTarget",
                "codedeploy:List*",
                "codeguru-profiler:Describe*",
                "codeguru-profiler:GetNotificationConfiguration",
                "codeguru-profiler:GetPolicy",
                "codeguru-profiler:List*",
                "codeguru-reviewer:Describe*",
                "codeguru-reviewer:List*",
                "codepipeline:GetPipeline",
                "codepipeline:GetPipelineState",
                "codepipeline:List*",
                "codestar-connections:GetConnection",
                "codestar-connections:GetRepositoryLink",
                "codestar-connections:GetSyncConfiguration",
                "codestar-connections:List*",
                "codestar-notifications:Describe*",
                "codestar-notifications:List*",
                "cognito-identity:DescribeIdentityPool",
                "cognito-identity:GetIdentityPoolRoles",
                "cognito-identity:ListIdentityPools",
                "cognito-identity:ListTagsForResource",
                "cognito-idp:AdminListGroupsForUser",
                "cognito-idp:DescribeIdentityProvider",
                "cognito-idp:DescribeResourceServer",
                "cognito-idp:DescribeRiskConfiguration",
                "cognito-idp:DescribeUserImportJob",
                "cognito-idp:DescribeUserPool",
                "cognito-idp:DescribeUserPoolDomain",
                "cognito-idp:GetGroup",
                "cognito-idp:GetLogDeliveryConfiguration",
                "cognito-idp:GetUICustomization",
                "cognito-idp:GetUserPoolMfaConfig",
                "cognito-idp:GetWebACLForResource",
                "cognito-idp:ListGroups",
                "cognito-idp:ListIdentityProviders",
                "cognito-idp:ListResourceServers",
                "cognito-idp:ListUserPoolClients",
                "cognito-idp:ListUserPools",
                "cognito-idp:ListTagsForResource",
                "comprehend:Describe*",
                "comprehend:List*",
                "config:Describe*",
                "config:GetStoredQuery",
                "config:List*",
                "connect:Describe*",
                "connect:GetTaskTemplate",
                "connect:List*",
                "databrew:Describe*",
                "databrew:List*",
                "datapipeline:Describe*",
                "datapipeline:GetPipelineDefinition",
                "datapipeline:List*",
                "datasync:Describe*",
                "datasync:List*",
                "deadline:GetFarm",
                "deadline:GetFleet",
                "deadline:GetLicenseEndpoint",
                "deadline:GetMonitor",
                "deadline:GetQueue",
                "deadline:GetQueueEnvironment",
                "deadline:GetQueueFleetAssociation",
                "deadline:GetStorageProfile",
                "deadline:List*",
                "detective:GetMembers",
                "detective:List*",
                "devicefarm:GetDevicePool",
                "devicefarm:GetInstanceProfile",
                "devicefarm:GetNetworkProfile",
                "devicefarm:GetProject",
                "devicefarm:GetTestGridProject",
                "devicefarm:GetVPCEConfiguration",
                "devicefarm:List*",
                "devops-guru:Describe*",
                "devops-guru:GetResourceCollection",
                "devops-guru:List*",
                "dms:Describe*",
                "dms:List*",
                "ds:Describe*",
                "dynamodb:Describe*",
                "dynamodb:GetResourcePolicy",
                "dynamodb:List*",
                "ec2:Describe*",
                "ec2:GetAssociatedEnclaveCertificateIamRoles",
                "ec2:GetIpamPoolAllocations",
                "ec2:GetIpamPoolCidrs",
                "ec2:GetManagedPrefixListEntries",
                "ec2:GetNetworkInsightsAccessScopeContent",
                "ec2:GetSnapshotBlockPublicAccessState",
                "ec2:GetTransitGatewayMulticastDomainAssociations",
                "ec2:GetTransitGatewayRouteTableAssociations",
                "ec2:GetTransitGatewayRouteTablePropagations",
                "ec2:GetVerifiedAccessEndpointPolicy",
                "ec2:GetVerifiedAccessGroupPolicy",
                "ec2:GetVerifiedAccessInstanceWebAcl",
                "ec2:SearchLocalGatewayRoutes",
                "ec2:SearchTransitGatewayRoutes",
                "ecr:Describe*",
                "ecr:GetLifecyclePolicy",
                "ecr:GetRegistryPolicy",
                "ecr:GetRepositoryPolicy",
                "ecr:List*",
                "ecs:Describe*",
                "ecs:List*",
                "eks:AccessKubernetesApi",
                "eks:Describe*",
                "eks:List*",
                "elasticache:Describe*",
                "elasticache:List*",
                "elasticbeanstalk:Describe*",
                "elasticbeanstalk:List*",
                "elasticfilesystem:Describe*",
                "elasticloadbalancing:GetResourcePolicy",
                "elasticloadbalancing:GetTrustStoreCaCertificatesBundle",
                "elasticloadbalancing:GetTrustStoreRevocationContent",
                "elasticloadbalancing:Describe*",
                "elasticmapreduce:Describe*",
                "elasticmapreduce:List*",
                "emr-containers:Describe*",
                "emr-containers:List*",
                "emr-serverless:GetApplication",
                "emr-serverless:List*",
                "es:Describe*",
                "es:List*",
                "events:Describe*",
                "events:List*",
                "evidently:GetExperiment",
                "evidently:GetFeature",
                "evidently:GetLaunch",
                "evidently:GetProject",
                "evidently:GetSegment",
                "evidently:List*",
                "firehose:Describe*",
                "firehose:List*",
                "fis:GetExperimentTemplate",
                "fis:GetTargetAccountConfiguration",
                "fis:List*",
                "fms:GetNotificationChannel",
                "fms:GetPolicy",
                "fms:List*",
                "forecast:Describe*",
                "forecast:List*",
                "frauddetector:BatchGetVariable",
                "frauddetector:Describe*",
                "frauddetector:GetDetectors",
                "frauddetector:GetDetectorVersion",
                "frauddetector:GetEntityTypes",
                "frauddetector:GetEventTypes",
                "frauddetector:GetExternalModels",
                "frauddetector:GetLabels",
                "frauddetector:GetListElements",
                "frauddetector:GetListsMetadata",
                "frauddetector:GetModelVersion",
                "frauddetector:GetOutcomes",
                "frauddetector:GetRules",
                "frauddetector:GetVariables",
                "frauddetector:List*",
                "fsx:Describe*",
                "gamelift:Describe*",
                "gamelift:List*",
                "globalaccelerator:Describe*",
                "globalaccelerator:List*",
                "glue:GetDatabase",
                "glue:GetDatabases",
                "glue:GetJob",
                "glue:GetRegistry",
                "glue:GetSchema",
                "glue:GetSchemaVersion",
                "glue:GetTable",
                "glue:GetTags",
                "glue:GetTrigger",
                "glue:List*",
                "glue:querySchemaVersionMetadata",
                "grafana:Describe*",
                "grafana:List*",
                "greengrass:Describe*",
                "greengrass:GetDeployment",
                "greengrass:List*",
                "groundstation:GetConfig",
                "groundstation:GetDataflowEndpointGroup",
                "groundstation:GetMissionProfile",
                "groundstation:List*",
                "guardduty:GetDetector",
                "guardduty:GetFilter",
                "guardduty:GetIPSet",
                "guardduty:GetMalwareProtectionPlan",
                "guardduty:GetMasterAccount",
                "guardduty:GetMembers",
                "guardduty:GetThreatIntelSet",
                "guardduty:List*",
                "health:DescribeEvents",
                "health:DescribeEventDetails",
                "healthlake:Describe*",
                "healthlake:List*",
                "iam:GetGroup",
                "iam:GetGroupPolicy",
                "iam:GetInstanceProfile",
                "iam:GetLoginProfile",
                "iam:GetOpenIDConnectProvider",
                "iam:GetPolicy",
                "iam:GetPolicyVersion",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:GetSAMLProvider",
                "iam:GetServerCertificate",
                "iam:GetServiceLinkedRoleDeletionStatus",
                "iam:GetUser",
                "iam:GetUserPolicy",
                "iam:ListAttachedRolePolicies",
                "iam:ListOpenIDConnectProviders",
                "iam:ListRolePolicies",
                "iam:ListRoles",
                "iam:ListServerCertificates",
                "iam:ListVirtualMFADevices",
                "identitystore:DescribeGroup",
                "identitystore:DescribeGroupMembership",
                "identitystore:ListGroupMemberships",
                "identitystore:ListGroups",
                "imagebuilder:GetComponent",
                "imagebuilder:GetContainerRecipe",
                "imagebuilder:GetDistributionConfiguration",
                "imagebuilder:GetImage",
                "imagebuilder:GetImagePipeline",
                "imagebuilder:GetImageRecipe",
                "imagebuilder:GetInfrastructureConfiguration",
                "imagebuilder:GetLifecyclePolicy",
                "imagebuilder:GetWorkflow",
                "imagebuilder:List*",
                "inspector2:List*",
                "inspector:Describe*",
                "inspector:List*",
                "internetmonitor:GetMonitor",
                "internetmonitor:List*",
                "iot:Describe*",
                "iot:GetPackage",
                "iot:GetPackageVersion",
                "iot:GetPolicy",
                "iot:GetThingShadow",
                "iot:GetTopicRule",
                "iot:GetTopicRuleDestination",
                "iot:GetV2LoggingOptions",
                "iot:List*",
                "iotanalytics:Describe*",
                "iotanalytics:List*",
                "iotevents:Describe*",
                "iotevents:List*",
                "iotsitewise:Describe*",
                "iotsitewise:List*",
                "iotwireless:GetDestination",
                "iotwireless:GetDeviceProfile",
                "iotwireless:GetFuotaTask",
                "iotwireless:GetMulticastGroup",
                "iotwireless:GetNetworkAnalyzerConfiguration",
                "iotwireless:GetServiceProfile",
                "iotwireless:GetWirelessDevice",
                "iotwireless:GetWirelessGateway",
                "iotwireless:GetWirelessGatewayTaskDefinition",
                "iotwireless:List*",
                "ivs:GetChannel",
                "ivs:GetEncoderConfiguration",
                "ivs:GetPlaybackRestrictionPolicy",
                "ivs:GetRecordingConfiguration",
                "ivs:GetStage",
                "ivs:List*",
                "ivschat:GetLoggingConfiguration",
                "ivschat:GetRoom",
                "ivschat:List*",
                "kafka:Describe*",
                "kafka:GetClusterPolicy",
                "kafka:List*",
                "kafkaconnect:Describe*",
                "kafkaconnect:List*",
                "kendra:Describe*",
                "kendra:List*",
                "kinesis:Describe*",
                "kinesis:GetResourcePolicy",
                "kinesis:List*",
                "kinesisanalytics:Describe*",
                "kinesisanalytics:List*",
                "kinesisvideo:Describe*",
                "kms:DescribeKey",
                "kms:ListResourceTags",
                "kms:ListKeys",
                "kms:GetKeyPolicy",
                "kms:GetKeyRotationStatus",
                "kms:ListAliases",
                "kms:ListKeyRotations",
                "lakeformation:Describe*",
                "lakeformation:GetLFTag",
                "lakeformation:GetResourceLFTags",
                "lakeformation:List*",
                "lambda:GetAlias",
                "lambda:GetCodeSigningConfig",
                "lambda:GetEventSourceMapping",
                "lambda:GetFunctionCodeSigningConfig",
                "lambda:GetFunctionConfiguration",
                "lambda:GetFunctionEventInvokeConfig",
                "lambda:GetFunctionRecursionConfig",
                "lambda:GetFunctionUrlConfig",
                "lambda:GetLayerVersion",
                "lambda:GetLayerVersionPolicy",
                "lambda:GetPolicy",
                "lambda:GetProvisionedConcurrencyConfig",
                "lambda:GetRuntimeManagementConfig",
                "lambda:List*",
                "launchwizard:GetDeployment",
                "launchwizard:List*",
                "license-manager:GetLicense",
                "license-manager:List*",
                "lightsail:GetAlarms",
                "lightsail:GetBuckets",
                "lightsail:GetCertificates",
                "lightsail:GetContainerServices",
                "lightsail:GetDisk",
                "lightsail:GetDisks",
                "lightsail:GetInstance",
                "lightsail:GetInstances",
                "lightsail:GetLoadBalancer",
                "lightsail:GetLoadBalancers",
                "lightsail:GetLoadBalancerTlsCertificates",
                "lightsail:GetStaticIp",
                "lightsail:GetStaticIps",
                "logs:Describe*",
                "logs:FilterLogEvents",
                "logs:GetDataProtectionPolicy",
                "logs:GetDelivery",
                "logs:GetDeliveryDestination",
                "logs:GetDeliveryDestinationPolicy",
                "logs:GetDeliverySource",
                "logs:GetLogAnomalyDetector",
                "logs:GetLogDelivery",
                "logs:GetLogGroupFields",
                "logs:GetQueryResults",
                "logs:List*",
                "logs:StartQuery",
                "logs:StopLiveTail",
                "logs:StopQuery",
                "logs:TestMetricFilter",
                "m2:GetApplication",
                "m2:GetEnvironment",
                "m2:List*",
                "macie2:GetAllowList",
                "macie2:GetCustomDataIdentifier",
                "macie2:GetFindingsFilter",
                "macie2:GetMacieSession",
                "macie2:List*",
                "mediaconnect:Describe*",
                "mediaconnect:List*",
                "medialive:Describe*",
                "medialive:GetCloudWatchAlarmTemplate",
                "medialive:GetCloudWatchAlarmTemplateGroup",
                "medialive:GetEventBridgeRuleTemplate",
                "medialive:GetEventBridgeRuleTemplateGroup",
                "medialive:GetSignalMap",
                "medialive:List*",
                "mediapackage-vod:Describe*",
                "mediapackage-vod:List*",
                "mediapackage:Describe*",
                "mediapackage:List*",
                "mediapackagev2:GetChannel",
                "mediapackagev2:GetChannelGroup",
                "mediapackagev2:GetChannelPolicy",
                "mediapackagev2:GetOriginEndpoint",
                "mediapackagev2:GetOriginEndpointPolicy",
                "mediapackagev2:List*",
                "memorydb:Describe*",
                "memorydb:List*",
                "mobiletargeting:GetInAppTemplate",
                "mobiletargeting:List*",
                "mq:Describe*",
                "mq:List*",
                "network-firewall:Describe*",
                "network-firewall:List*",
                "networkmanager:Describe*",
                "networkmanager:GetConnectAttachment",
                "networkmanager:GetConnectPeer",
                "networkmanager:GetCoreNetwork",
                "networkmanager:GetCoreNetworkPolicy",
                "networkmanager:GetCustomerGatewayAssociations",
                "networkmanager:GetDevices",
                "networkmanager:GetLinkAssociations",
                "networkmanager:GetLinks",
                "networkmanager:GetSites",
                "networkmanager:GetSiteToSiteVpnAttachment",
                "networkmanager:GetTransitGatewayPeering",
                "networkmanager:GetTransitGatewayRegistrations",
                "networkmanager:GetTransitGatewayRouteTableAttachment",
                "networkmanager:GetVpcAttachment",
                "networkmanager:List*",
                "oam:GetLink",
                "oam:GetSink",
                "oam:GetSinkPolicy",
                "oam:List*",
                "omics:GetAnnotationStore",
                "omics:GetReferenceStore",
                "omics:GetRunGroup",
                "omics:GetSequenceStore",
                "omics:GetVariantStore",
                "omics:GetWorkflow",
                "omics:List*",
                "organizations:Describe*",
                "organizations:List*",
                "osis:GetPipeline",
                "osis:List*",
                "payment-cryptography:GetAlias",
                "payment-cryptography:GetKey",
                "payment-cryptography:List*",
                "pca-connector-ad:GetConnector",
                "pca-connector-ad:GetDirectoryRegistration",
                "pca-connector-ad:GetServicePrincipalName",
                "pca-connector-ad:GetTemplate",
                "pca-connector-ad:GetTemplateGroupAccessControlEntry",
                "pca-connector-ad:List*",
                "pca-connector-scep:GetChallengeMetadata",
                "pca-connector-scep:GetConnector",
                "pca-connector-scep:List*",
                "personalize:Describe*",
                "personalize:List*",
                "pi:DescribeDimensionKeys",
                "pi:GetResourceMetadata",
                "pi:GetResourceMetrics",
                "pi:ListAvailableResourceDimensions",
                "pi:ListAvailableResourceMetrics",
                "pipes:Describe*",
                "pipes:List*",
                "proton:GetEnvironmentTemplate",
                "proton:GetServiceTemplate",
                "proton:List*",
                "qbusiness:GetApplication",
                "qbusiness:GetDataSource",
                "qbusiness:GetIndex",
                "qbusiness:GetPlugin",
                "qbusiness:GetRetriever",
                "qbusiness:GetWebExperience",
                "qbusiness:List*",
                "ram:GetPermission",
                "ram:GetResourceShares",
                "ram:List*",
                "rds:Describe*",
                "rds:List*",
                "redshift-serverless:GetNamespace",
                "redshift-serverless:GetWorkgroup",
                "redshift-serverless:List*",
                "redshift:Describe*",
                "refactor-spaces:GetApplication",
                "refactor-spaces:GetEnvironment",
                "refactor-spaces:GetRoute",
                "refactor-spaces:List*",
                "rekognition:Describe*",
                "rekognition:List*",
                "resiliencehub:Describe*",
                "resiliencehub:List*",
                "resource-explorer-2:GetDefaultView",
                "resource-explorer-2:GetIndex",
                "resource-explorer-2:GetView",
                "resource-explorer-2:List*",
                "resource-explorer-2:Search",
                "resource-groups:GetGroup",
                "resource-groups:GetGroupConfiguration",
                "resource-groups:GetGroupQuery",
                "resource-groups:GetTags",
                "resource-groups:List*",
                "route53-recovery-control-config:Describe*",
                "route53-recovery-control-config:List*",
                "route53-recovery-readiness:GetCell",
                "route53-recovery-readiness:GetReadinessCheck",
                "route53-recovery-readiness:GetRecoveryGroup",
                "route53-recovery-readiness:GetResourceSet",
                "route53-recovery-readiness:List*",
                "route53:GetDNSSEC",
                "route53:GetHealthCheck",
                "route53:GetHealthCheckStatus",
                "route53:GetHostedZone",
                "route53:List*",
                "route53profiles:GetProfile",
                "route53profiles:GetProfileAssociation",
                "route53profiles:GetProfileResourceAssociation",
                "route53profiles:List*",
                "route53resolver:GetFirewallDomainList",
                "route53resolver:GetFirewallRuleGroup",
                "route53resolver:GetFirewallRuleGroupAssociation",
                "route53resolver:GetOutpostResolver",
                "route53resolver:GetResolverConfig",
                "route53resolver:GetResolverQueryLogConfig",
                "route53resolver:GetResolverQueryLogConfigAssociation",
                "route53resolver:GetResolverRule",
                "route53resolver:GetResolverRuleAssociation",
                "route53resolver:List*",
                "rum:GetAppMonitor",
                "rum:List*",
                "s3-outposts:ListEndpoints",
                "s3-outposts:ListOutpostsWithS3",
                "s3:GetAccessGrant",
                "s3:GetAccessGrantsInstance",
                "s3:GetAccessGrantsLocation",
                "s3:GetAccessPoint",
                "s3:GetAccessPointConfigurationForObjectLambda",
                "s3:GetAccessPointForObjectLambda",
                "s3:GetAccessPointPolicy",
                "s3:GetAccessPointPolicyForObjectLambda",
                "s3:GetAccessPointPolicyStatusForObjectLambda",
                "s3:GetBucketAbac",
                "s3:GetBucketAcl",
                "s3:GetBucketCORS",
                "s3:GetBucketLocation",
                "s3:GetBucketLogging",
                "s3:GetBucketMetadataTableConfiguration",
                "s3:GetBucketNotification",
                "s3:GetBucketObjectLockConfiguration",
                "s3:GetBucketOwnershipControls",
                "s3:GetBucketPolicy",
                "s3:GetBucketPublicAccessBlock",
                "s3:GetBucketTagging",
                "s3:GetBucketVersioning",
                "s3:GetEncryptionConfiguration",
                "s3:GetLifecycleConfiguration",
                "s3:GetMultiRegionAccessPoint",
                "s3:GetMultiRegionAccessPointPolicy",
                "s3:GetMultiRegionAccessPointPolicyStatus",
                "s3:GetReplicationConfiguration",
                "s3:GetStorageLensConfiguration",
                "s3:GetStorageLensConfigurationTagging",
                "s3:GetStorageLensGroup",
                "s3:ListAllMyBuckets",
                "sagemaker:Describe*",
                "sagemaker:List*",
                "scheduler:GetSchedule",
                "scheduler:GetScheduleGroup",
                "scheduler:List*",
                "schemas:Describe*",
                "schemas:GetResourcePolicy",
                "schemas:List*",
                "secretsmanager:Describe*",
                "secretsmanager:GetResourcePolicy",
                "secretsmanager:List*",
                "securityhub:BatchGetAutomationRules",
                "securityhub:BatchGetSecurityControls",
                "securityhub:Describe*",
                "securityhub:GetConfigurationPolicy",
                "securityhub:GetConfigurationPolicyAssociation",
                "securityhub:GetEnabledStandards",
                "securityhub:GetFindingAggregator",
                "securityhub:GetInsights",
                "securityhub:List*",
                "securitylake:GetSubscriber",
                "securitylake:List*",
                "servicecatalog:Describe*",
                "servicecatalog:GetApplication",
                "servicecatalog:GetAttributeGroup",
                "servicecatalog:List*",
                "servicequotas:GetServiceQuota",
                "ses:Describe*",
                "ses:GetAccount",
                "ses:GetAddonInstance",
                "ses:GetAddonSubscription",
                "ses:GetArchive",
                "ses:GetConfigurationSet",
                "ses:GetConfigurationSetEventDestinations",
                "ses:GetContactList",
                "ses:GetDedicatedIpPool",
                "ses:GetDedicatedIps",
                "ses:GetEmailIdentity",
                "ses:GetEmailTemplate",
                "ses:GetIngressPoint",
                "ses:GetRelay",
                "ses:GetRuleSet",
                "ses:GetTemplate",
                "ses:GetTrafficPolicy",
                "ses:List*",
                "shield:Describe*",
                "shield:List*",
                "signer:GetSigningProfile",
                "signer:List*",
                "sns:GetDataProtectionPolicy",
                "sns:GetSubscriptionAttributes",
                "sns:GetTopicAttributes",
                "sns:List*",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl",
                "sqs:List*",
                "ssm-contacts:GetContact",
                "ssm-contacts:GetContactChannel",
                "ssm-contacts:List*",
                "ssm-incidents:GetReplicationSet",
                "ssm-incidents:GetResponsePlan",
                "ssm-incidents:List*",
                "ssm-sap:GetApplication",
                "ssm-sap:List*",
                "ssm:Describe*",
                "ssm:GetDefaultPatchBaseline",
                "ssm:GetDocument",
                "ssm:GetParameters",
                "ssm:GetPatchBaseline",
                "ssm:GetResourcePolicies",
                "ssm:List*",
                "sso:GetInlinePolicyForPermissionSet",
                "sso:GetManagedApplicationInstance",
                "sso:GetPermissionsBoundaryForPermissionSet",
                "sso:GetSharedSsoConfiguration",
                "sso:ListAccountAssignments",
                "sso:ListApplicationAssignments",
                "sso:ListApplications",
                "sso:ListCustomerManagedPolicyReferencesInPermissionSet",
                "sso:ListInstances",
                "sso:ListManagedPoliciesInPermissionSet",
                "sso:ListTagsForResource",
                "states:GetExecutionHistory",
                "states:Describe*",
                "states:List*",
                "support:CreateCase",
                "support:DescribeCases",
                "synthetics:Describe*",
                "synthetics:GetCanary",
                "synthetics:GetCanaryRuns",
                "synthetics:GetGroup",
                "synthetics:List*",
                "tag:GetResources",
                "timestream:Describe*",
                "timestream:List*",
                "transfer:Describe*",
                "transfer:List*",
                "verifiedpermissions:GetIdentitySource",
                "verifiedpermissions:GetPolicy",
                "verifiedpermissions:GetPolicyStore",
                "verifiedpermissions:GetPolicyTemplate",
                "verifiedpermissions:GetSchema",
                "verifiedpermissions:List*",
                "vpc-lattice:GetAccessLogSubscription",
                "vpc-lattice:GetAuthPolicy",
                "vpc-lattice:GetListener",
                "vpc-lattice:GetResourcePolicy",
                "vpc-lattice:GetRule",
                "vpc-lattice:GetService",
                "vpc-lattice:GetServiceNetwork",
                "vpc-lattice:GetServiceNetworkServiceAssociation",
                "vpc-lattice:GetServiceNetworkVpcAssociation",
                "vpc-lattice:GetTargetGroup",
                "vpc-lattice:List*",
                "wafv2:GetIPSet",
                "wafv2:GetLoggingConfiguration",
                "wafv2:GetRegexPatternSet",
                "wafv2:GetRuleGroup",
                "wafv2:GetWebACL",
                "wafv2:GetWebACLForResource",
                "wafv2:List*",
                "workspaces-web:GetBrowserSettings",
                "workspaces-web:GetIdentityProvider",
                "workspaces-web:GetNetworkSettings",
                "workspaces-web:GetPortal",
                "workspaces-web:GetPortalServiceProviderMetadata",
                "workspaces-web:GetTrustStore",
                "workspaces-web:GetUserAccessLoggingSettings",
                "workspaces-web:GetUserSettings",
                "workspaces-web:List*",
                "workspaces:Describe*",
                "xray:BatchGetTraces",
                "xray:GetGroup",
                "xray:GetGroups",
                "xray:GetSamplingRules",
                "xray:GetServiceGraph",
                "xray:GetTraceSummaries",
                "xray:List*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AIOPSAPIGatewayAccess",
            "Effect": "Allow",
            "Action": [
                "apigateway:GET"
            ],
            "Resource": [
                "arn:aws:apigateway:*::/restapis",
                "arn:aws:apigateway:*::/restapis/*",
                "arn:aws:apigateway:*::/restapis/*/deployments",
                "arn:aws:apigateway:*::/restapis/*/deployments/*",
                "arn:aws:apigateway:*::/restapis/*/resources/*/methods/*/integrations",
                "arn:aws:apigateway:*::/restapis/*/resources/*/methods/*/integrations/*",
                "arn:aws:apigateway:*::/restapis/*/stages",
                "arn:aws:apigateway:*::/restapis/*/stages/*",
                "arn:aws:apigateway:*::/apis",
                "arn:aws:apigateway:*::/apis/*",
                "arn:aws:apigateway:*::/apis/*/deployments",
                "arn:aws:apigateway:*::/apis/*/deployments/*",
                "arn:aws:apigateway:*::/apis/*/integrations",
                "arn:aws:apigateway:*::/apis/*/integrations/*",
                "arn:aws:apigateway:*::/apis/*/stages",
                "arn:aws:apigateway:*::/apis/*/stages/*",
                "arn:aws:apigateway:*::/domainnames/*"
            ]
        }
    ]
}
```

# Limitar el acceso de los agentes a una AWS cuenta
<a name="aws-devops-agent-security-limiting-agent-access-in-an-aws-account"></a>

AWS DevOps El agente utiliza las funciones de IAM para descubrir y describir AWS los recursos durante las investigaciones de incidentes y las evaluaciones preventivas. Puede controlar el nivel de acceso del agente configurando las políticas de IAM asociadas a estas funciones. La topología de la aplicación no muestra todo a lo que tiene acceso el agente; las políticas de IAM son la única forma de limitar realmente a qué AWS servicios APIs y recursos puede acceder el agente.

## Comprender las funciones de IAM para el agente AWS DevOps
<a name="understanding-iam-roles-for-aws-devops-agent"></a>

AWS DevOps El agente usa las funciones de IAM para acceder a los recursos en dos tipos de cuentas:
+ **Función de cuenta principal**: otorga al agente acceso a los recursos de la AWS cuenta en la que se crea el espacio de agentes.
+ **Funciones de cuenta secundarias**: otorga al agente acceso a los recursos de AWS las cuentas adicionales que usted conecte al espacio de agentes.

Para cualquier tipo de cuenta, puede restringir AWS los servicios a los que puede acceder el agente, limitar el acceso a recursos específicos dentro de esos servicios y controlar en qué regiones puede operar el agente.

## Elegir los límites de los recursos
<a name="choosing-your-resource-boundaries"></a>

Al limitar el acceso a los recursos, debe incluir permisos suficientes para que el agente investigue correctamente los incidentes de las aplicaciones. Esto incluye:
+ Todos los recursos para las aplicaciones incluidas en el ámbito de aplicación que el agente debe supervisar e investigar
+ Toda la infraestructura de soporte de la que dependen esas aplicaciones

La infraestructura de soporte puede incluir:
+ Componentes de red (subredesVPCs, balanceadores de carga, pasarelas de API)
+ Almacenes de datos (bases de datos, cachés, almacenamiento de objetos)
+ Recursos informáticos (instancias EC2, funciones Lambda, contenedores)
+ Servicios de supervisión y registro (CloudWatch,) CloudTrail
+ Recursos de administración de identidad y acceso necesarios para comprender los permisos

Si restringe el acceso de forma demasiado restringida, es posible que el agente no pueda identificar las causas fundamentales que se originan en la infraestructura de soporte que está fuera de los límites definidos.

## Restricción del acceso al servicio
<a name="restricting-service-access"></a>

Puede limitar AWS los servicios a los que puede acceder el agente modificando las políticas de IAM asociadas a las funciones del agente. Al crear políticas personalizadas, siga estas prácticas recomendadas:
+ **Otorgue únicamente permisos de solo lectura**: el agente debe leer las configuraciones, las métricas y los registros de los recursos durante las investigaciones. Evite conceder permisos que permitan al agente modificar o eliminar recursos.
+ **Limite a los servicios necesarios**: incluya solo los AWS servicios que contienen los recursos relevantes para sus aplicaciones. Por ejemplo, si su aplicación no usa Amazon RDS, no incluya los permisos de RDS en la política.
+ **Utilice acciones específicas en lugar de caracteres comodín**: en lugar de conceder `service:*` permisos, especifique acciones individuales como o. `cloudwatch:GetMetricData` `ec2:DescribeInstances`

Ejemplo de política que se restringe a servicios específicos:

```
json

{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:GetMetricData",
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:DescribeAlarms",
        "logs:GetLogEvents",
        "logs:FilterLogEvents",
        "ec2:DescribeInstances",
        "lambda:GetFunction",
        "lambda:GetFunctionConfiguration"
      ],
      "Resource": "*"
    }
  ]
}
```

## Limitar el acceso a los recursos
<a name="restricting-resource-access"></a>

Para limitar el agente a recursos específicos dentro de un servicio, utilice los permisos a nivel de recurso en sus políticas de IAM. Esto le permite conceder acceso únicamente a los recursos que coincidan con patrones específicos.

**Uso de patrones de ARN de recursos:**

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "lambda:GetFunction",
        "lambda:GetFunctionConfiguration"
      ],
      "Resource": "arn:aws:lambda:*:*:function:production-*"
    }
  ]
}
```

Este ejemplo limita al agente a acceder únicamente a las funciones de Lambda con nombres que comiencen por «production-».

**Uso de restricciones basadas en etiquetas:**

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceStatus"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Environment": "production"
        }
      }
    }
  ]
}
```

Este ejemplo limita al agente a acceder únicamente a las instancias de EC2 etiquetadas con. `Environment=production`

## Restringir el acceso regional
<a name="restricting-regional-access"></a>

Para limitar AWS las regiones a las que puede acceder el agente, utilice la clave de `aws:RequestedRegion` condición de sus políticas de IAM:

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "lambda:Get*",
        "cloudwatch:Get*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": [
            "us-east-1",
            "us-west-2"
          ]
        }
      }
    }
  ]
}
```

Este ejemplo limita al agente a acceder a los recursos únicamente en las regiones us-east-1 y us-west-2.

## Creación de políticas de IAM personalizadas
<a name="creating-custom-iam-policies"></a>

Al crear un espacio de agente o añadir cuentas secundarias, tiene la opción de crear un rol de IAM personalizado mediante una plantilla de políticas. Esto le permite implementar el principio de privilegios mínimos.

**Al crear un espacio de agente**

Desde la consola del DevOps agente en la consola AWS de administración...
+ Elija **Crear un nuevo rol de DevOps agente mediante un documento de política** y siga las instrucciones

**Al editar un espacio de agente**

Desde la consola del DevOps agente a la consola AWS de administración...
+ Seleccione la pestaña **Capacidades**
+ Seleccione la cuenta secundaria que desee editar en la sección **Cloud** y haga clic en Editar
+ Elige **Crear una nueva política de DevOps agente mediante una plantilla** y sigue las instrucciones

## Mejores prácticas en materia de políticas personalizadas
<a name="custom-policy-best-practices"></a>
+ **Otorgue únicamente permisos de solo lectura**: evite los permisos que permiten la modificación o eliminación de recursos
+ **Utilice permisos a nivel de recursos siempre que sea posible**: restrinja el acceso a recursos específicos mediante patrones o etiquetas ARN
+ **Revise y audite los permisos con regularidad**: revise periódicamente las políticas de IAM del agente para asegurarse de que siguen ajustándose a sus requisitos de seguridad

# Configuración de la autenticación de IAM Identity Center
<a name="aws-devops-agent-security-setting-up-iam-identity-center-authentication"></a>

La autenticación del IAM Identity Center proporciona una forma centralizada de gestionar el acceso de los usuarios a la aplicación web AWS DevOps Agent Space. En esta guía se explica cómo configurar la autenticación del IAM Identity Center y cómo gestionar los usuarios.

## Requisitos previos
<a name="prerequisites"></a>

Antes de configurar la autenticación del IAM Identity Center, asegúrese de:
+ El Centro de identidad de IAM está activado en su organización o cuenta
+ Permisos de administrador en el agente AWS DevOps 
+ Un espacio de agente configurado o listo para ser creado

## Opciones de autenticación
<a name="authentication-options"></a>

AWS DevOps El agente ofrece dos métodos de autenticación para acceder a la aplicación web Agent Space:

**Autenticación de IAM Identity Center**: recomendada para entornos de producción. Proporciona una administración centralizada de usuarios, integración con proveedores de identidad externos y sesiones de hasta 12 horas.

**Acceso de administrador (autenticación de IAM)**: proporciona un acceso rápido a los administradores durante la instalación y la configuración iniciales. Las sesiones están limitadas a 30 minutos.

## Configuración del centro de identidad de IAM durante la creación de Agent Space
<a name="configuring-iam-identity-center-during-agent-space-creation"></a>

Al crear un espacio de agente, puede configurar la autenticación del Centro de Identidad de IAM en la pestaña **Acceso**:

### Paso 1: Navegue hasta la configuración de la aplicación web
<a name="step-1-navigate-to-the-web-app-configuration"></a>

1. Tras configurar los detalles del espacio de agente y el acceso a la AWS cuenta, vaya a la pestaña **Acceso**

1. Verás dos secciones: «Connect IAM Identity Center» y «Acceso de administrador»

### Paso 2: Configurar la integración del centro de identidad de IAM
<a name="step-2-configure-iam-identity-center-integration"></a>

En la sección **Connect [Agent Space] al centro de identidad de IAM**:

1. **Compruebe la instancia del IAM Identity Center: la consola muestra qué instancia** de Identity Center gestionará el acceso de los usuarios de la aplicación web (por ejemplo,`ssoins-7223a9580931edbe`). La instancia de IAM Identity Center más cercana se rellenará automáticamente.

1. **Seleccione la opción Nombre del rol de la aplicación de IAM Identity Center y elija una de estas tres opciones**:

**Cree automáticamente un nuevo rol de DevOps agente** (recomendado):
+ El sistema crea automáticamente un nuevo rol de servicio con los permisos adecuados
+ Esta es la opción más sencilla y funciona en la mayoría de los casos de uso

**Asigne un rol existente**:
+ Utilice un rol de IAM existente que ya haya creado
+ El sistema verificará que el rol tiene los permisos necesarios
+ Elija esta opción si su organización tiene funciones precreadas para el agente AWS DevOps 

**Cree un nuevo rol de DevOps agente mediante una plantilla de políticas**:
+ Utilice los detalles de la política proporcionados para crear su propio rol personalizado en la consola de IAM
+ Elija esta opción si necesita personalizar los permisos del rol

Tras hacer clic en Conectar, el sistema automáticamente:
+ Crea o configura el rol de IAM especificado
+ Configura una aplicación del centro de identidad de IAM para su espacio de agente
+ Establece relaciones de confianza entre el Centro de Identidad de IAM y la aplicación web Agent Space
+ Configura los flujos de autenticación OAuth 2.0 para un acceso seguro de los usuarios

### Alternativa: usar el acceso de administrador
<a name="alternative-using-admin-access"></a>

Si quiere acceder inmediatamente a la aplicación web Agent Space sin configurar el IAM Identity Center:

1. En la sección **Acceso de administrador**, anote el ARN del rol de IAM que proporciona acceso de administrador (por ejemplo,) `arn:aws:iam::440491339484:role/service-role/DevOpsAgentRole-WebappAdmin-15ppoc42`

1. Haga clic en el botón azul de **acceso de administrador** para iniciar la aplicación web Agent Space con autenticación de IAM

1. Las sesiones que utilizan este método están limitadas a 30 minutos

**nota**  
**El acceso de administrador está destinado a la instalación y configuración iniciales. Para uso en producción y operaciones continuas, configure la autenticación del IAM Identity Center.

## Agregación de usuarios y grupos
<a name="adding-users-and-groups"></a>

Tras configurar la autenticación del IAM Identity Center, debe conceder a usuarios y grupos específicos acceso a la aplicación web Agent Space:

### Paso 1: Acceder a la gestión de usuarios
<a name="step-1-access-user-management"></a>

1. En la consola del AWS DevOps agente, seleccione su espacio de agente

1. Ve a la pestaña **Acceso**

1. En **Acceso de usuarios**, haga clic en **Administrar usuarios y grupos**

### Paso 2: Añadir usuarios o grupos
<a name="step-2-add-users-or-groups"></a>

1. Elija **Agregar usuarios o grupos**

1. Busque usuarios o grupos en el directorio del centro de identidad de IAM

1. Seleccione las casillas de verificación situadas junto a los usuarios o grupos que desee añadir

1. Haga clic en **Agregar** para concederles acceso

Los usuarios seleccionados ahora pueden acceder a la aplicación web Agent Space con sus credenciales del IAM Identity Center.

### Trabajar con proveedores de identidad externos
<a name="working-with-external-identity-providers"></a>

Si utilizas un proveedor de identidad externo (como Okta, Microsoft Entra ID o Ping Identity) con IAM Identity Center:
+ Los usuarios y los grupos se sincronizan desde su proveedor de identidad externo con el Centro de identidades de IAM
+ Al añadir usuarios y grupos a la aplicación web Agent Space, los selecciona del directorio sincronizado
+ Su proveedor de identidad externo mantiene los atributos de usuario y las pertenencias a grupos
+ Los cambios en su proveedor de identidad se reflejan automáticamente en el Centro de identidades de IAM tras la sincronización

## Cómo acceden los usuarios a la aplicación web Agent Space
<a name="how-users-access-the-agent-space-web-app"></a>

Una vez que haya agregado usuarios a su espacio de agente:

1. Comparta la URL de la aplicación web Agent Space con los usuarios autorizados

1. Cuando los usuarios acceden a la URL, se les redirige a la página de inicio de sesión del IAM Identity Center

1. Tras introducir sus credenciales (y completar el MFA si está configurado), se les redirige de nuevo a la aplicación web Agent Space

1. Su sesión es válida durante 8 horas de forma predeterminada (la puede configurar el administrador del Centro de Identidad)

## Administración del acceso de los usuarios
<a name="managing-user-access"></a>

Puede actualizar el acceso de los usuarios en cualquier momento:

**Añadir más usuarios o grupos:**
+ Siga los mismos pasos descritos anteriormente para añadir usuarios o grupos adicionales

**Eliminar el acceso:**

1. En la sección **Acceso de usuario**, busque el usuario o grupo que desee eliminar

1. Haga clic en el botón **Eliminar** situado junto a su nombre

1. Confirme la eliminación

Los usuarios eliminados perderán el acceso inmediatamente, pero las sesiones activas pueden continuar hasta que caduquen.

## Administración de sesiones
<a name="session-management"></a>

Las sesiones del IAM Identity Center para la aplicación web Agent Space tienen las siguientes características:
+ **Duración predeterminada de la sesión**: 8 horas
+ **Seguridad de sesión**: cookies solo HTTP para una protección mejorada
+ **Autenticación multifactorial**: se admite cuando se configura en el IAM Identity Center
+ Credenciales de **API: las credenciales** SigV4 de corta duración (15 minutos) se emiten para las llamadas a la API y se renuevan automáticamente

Para configurar la duración de la sesión:

1. Navegue hasta la consola del IAM Identity Center

1. **Vaya a **Configuración** > Autenticación**

1. En **Duración de la sesión**, configura la duración que prefieras (de 1 hora a 12 horas)

1. Elija **Guardar cambios**.

## Desconectar Identity Center
<a name="disconnecting-identity-center"></a>

1. En la consola de su Agent Space, haga clic en **Acciones** en la esquina superior derecha y seleccione **Desconectarse del centro de identidades de IAM**

1. Confirme en el cuadro de diálogo de confirmación

# Configuración de la autenticación de un proveedor de identidad externo (IdP)
<a name="aws-devops-agent-security-setting-up-external-identity-provider-idp-authentication"></a>

La autenticación con un proveedor de identidad externo (IdP) permite a su organización utilizar un proveedor de identidad existente compatible con OIDC, como Okta o Microsoft Entra ID, para administrar el acceso de los usuarios a la aplicación web Agent Space. AWS DevOps Los usuarios inician sesión con sus credenciales corporativas directamente a través de su IdP, sin necesidad de AWS IAM Identity Center.

## Requisitos previos
<a name="prerequisites"></a>

Antes de configurar la autenticación de IdP externa, asegúrese de tener:
+ Un proveedor de identidad compatible con OIDC (Okta o Microsoft Entra ID)
+ Acceso de administrador a su proveedor de identidad
+ Permisos de administrador para acceder a la consola AWS DevOps del agente
+ Un espacio de agente configurado o listo para ser creado

## Funcionamiento
<a name="how-it-works"></a>

Al configurar la autenticación de IdP externa:
+ Los usuarios navegan hasta la URL de la aplicación web Agent Space
+ Se les redirige a la página de inicio de sesión de su proveedor de identidad
+ Tras autenticarse con sus credenciales corporativas, se les redirige de nuevo a la aplicación web
+ La aplicación web intercambia el token de autenticación por AWS credenciales de corta duración destinadas al Agent Space

Las sesiones son válidas durante un máximo de 8 horas. Las credenciales se actualizan automáticamente mediante los tokens de actualización del OIDC sin que los usuarios tengan que volver a autenticarse.

## Configuración de la autenticación de IdP externa
<a name="configuring-external-idp-authentication"></a>

### Paso 1: registre una aplicación en su proveedor de identidad
<a name="step-1-register-an-application-in-your-identity-provider"></a>

Elija su proveedor de identidad y siga las instrucciones de configuración correspondientes.

#### Opción A: Okta
<a name="option-a-okta"></a>

1. En la consola de administración de Okta, vaya a **Aplicaciones > **Aplicaciones**** y seleccione **Crear** integración de aplicaciones

1. Seleccione **OIDC - OpenID Connect** como método de inicio de sesión y **Aplicación web como tipo de aplicación**. Elija **Siguiente**.

1. Establezca un nombre descriptivo para la aplicación (por ejemplo,) `AWS DevOps Agent`

1. En **Tipo de subvención**, asegúrese de que esté marcada la siguiente casilla:
   + **Código de autorización** (predeterminado)
   + **Token de actualización**: es necesario para actualizar la sesión. Si no está activado, los usuarios no podrán mantener las sesiones.

**nota**  
**Okta no habilita el tipo de concesión Refresh Token de forma predeterminada. Debe habilitarlo de forma explícita.

1. Deje la **redirección de inicio de sesión URIs** como valor predeterminado por ahora; la actualizará después de configurar el espacio de agentes

1. En **Asignaciones**, asigne los usuarios o grupos a los que deberían tener acceso

1. Seleccione **Save**.

1. En la pestaña **General** de la aplicación, anote los siguientes valores:
   + **ID de cliente**
   + **Secreto de cliente**: seleccione **Copiar** para guardar este valor de forma segura

1. Anote su **dominio de Okta**: esta es la URL de su emisor (por ejemplo,`https://dev-12345678.okta.com`).

**nota**  
**En la** **pestaña Iniciar sesión, comprueba que el** emisor **esté configurado** como URL de Okta ** (no dinámica). Esto garantiza una URL de emisor estable.

**nota**  
**No añadas la ** reclamación de un** grupo al token de identificación de la pestaña Reclamaciones del servidor de autorización. AWS DevOps El agente no utiliza la pertenencia a un grupo de su IdP.

#### Opción B: Microsoft Entra ID
<a name="option-b-microsoft-entra-id"></a>

1. En el portal de Azure, vaya a **Microsoft Entra ID** > **Registros de aplicaciones** > **Nuevo** registro

1. Establezca un nombre descriptivo (por ejemplo,`AWS DevOps Agent`)

1. En **Tipos de cuentas compatibles**, selecciona la opción adecuada para tu organización (normalmente, **solo las cuentas de este directorio organizativo**)

1. Deja el **URI de redireccionamiento** en blanco por ahora. Selecciona **Registrar**

1. En la página de **descripción general** de la aplicación, anote los siguientes valores:
   + **ID de aplicación (cliente)**: se utiliza como ID de cliente al configurar el espacio de agentes
   + **ID de directorio (inquilino)**: se utiliza para construir la URL del emisor

1. Vaya a **Certificados y secretos** > **Nuevo secreto de cliente**
   + Establezca una descripción y un período de caducidad
   + Selecciona **Añadir** y copia el **valor** secreto inmediatamente; no se volverá a mostrar

1. La URL del emisor de Entra ID sigue este formato. `{tenant-id}`Sustitúyala por tu ID de directorio (inquilino) del paso 5:
   + `https://login.microsoftonline.com/{tenant-id}/v2.0`

**nota**  
**No habilites la afirmación opcional del** **grupo en la** configuración del token**. AWS DevOps El agente no utiliza la pertenencia a un grupo de su IdP.

### Paso 2: Habilite la aplicación Operator con la autenticación de IdP
<a name="step-2-enable-the-operator-app-with-idp-authentication"></a>

1. En la consola del AWS DevOps agente, seleccione su espacio de agente

1. Ve a la pestaña **Acceso**

1. En **Acceso de usuario**, selecciona **Proveedor de identidad externo**

1. En el formulario de configuración, configure lo siguiente:
   + **Proveedor de identidad**: seleccione su proveedor de identidad (Okta o Microsoft Entra ID)
   + **URL del emisor: la URL** del emisor del OIDC de su proveedor de identidad
   + ID de **cliente: el ID** de cliente de la aplicación OIDC que creó
   + Secreto de **cliente: el secreto** de cliente de su aplicación OIDC

1. En **Nombre del rol de la aplicación del proveedor de identidad**, elija una de estas tres opciones:
   + **Crear automáticamente un nuevo rol de DevOps agente** (recomendado): crea un nuevo rol de servicio con los permisos adecuados
   + **Asigne un rol existente**: utilice un rol de IAM existente que ya haya creado
   + **Cree un nuevo rol de DevOps agente mediante una plantilla de políticas**: utilice los detalles proporcionados para crear su propio rol en la consola de IAM

1. Revise la alerta de advertencia **de URL de llamada** que aparece en la parte inferior del formulario. Copia esta URL: tendrás que añadirla a la redirección permitida por tu proveedor de identidad para URIs que los usuarios puedan iniciar sesión.

1. Elige **Connect**

Tras seleccionar **Connect**, la consola muestra la **configuración del proveedor de identidad externo** con los siguientes detalles:
+ **Proveedor**: el proveedor de identidad que seleccionó
+ **URL del emisor: la URL** del emisor del OIDC configurada
+ **ID de cliente: el ID de cliente** configurado
+ Rol de **IAM (ARN): el rol** de IAM utilizado para el acceso de los usuarios
+ URL de devolución de **llamada: configura esta URL en tu proveedor de identidad como una URI de redireccionamiento** permitida
+ **URL de inicio de sesión**: utilice esta URL para acceder a la aplicación web a través de su proveedor de identidad

### Paso 3: Agrega la URL de devolución de llamada a tu proveedor de identidad
<a name="step-3-add-the-callback-url-to-your-identity-provider"></a>

#### Okta
<a name="okta"></a>

1. **En la consola de administración de Okta, dirígete a la pestaña General de tu aplicación**

1. **En **Iniciar sesión**, selecciona Editar**

1. Agrega la URL de devolución de llamada como URI de **redireccionamiento de inicio de sesión**:
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/callback`

1. (Opcional) Defina el **URI de inicio de sesión** para habilitar el inicio de sesión iniciado por el IdP desde el panel de Okta:
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/login`

1. (Recomendado) Agregue un **URI de redireccionamiento de cierre de sesión para redirigir** a los usuarios a la aplicación web después de cerrar sesión. De lo contrario, los usuarios podrían ver una página de error al cerrar sesión:
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome`

1. Seleccione **Save**.

#### ID de Microsoft Entra
<a name="microsoft-entra-id"></a>

1. En el portal de Azure, vaya a la página de **autenticación** de la aplicación

1. En **Configuraciones de plataforma**, elija **Agregar una plataforma** > **Web**

1. Introduzca la URL de devolución de llamada como **URI de redireccionamiento**:
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/callback`

1. (Opcional) Agrega un URI de redireccionamiento de cierre de sesión para redirigir a los usuarios a la aplicación web después de cerrar sesión:
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome`

1. **Seleccione Configurar**

### Paso 4: Verificar la configuración
<a name="step-4-verify-the-configuration"></a>

1. Navegue hasta la **URL de inicio de sesión** que aparece en la consola:
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/login`

1. Deberías ser redirigido a la página de inicio de sesión de tu proveedor de identidad

1. Inicie sesión con sus credenciales corporativas

1. Tras la autenticación correcta, se le redirigirá de nuevo a la aplicación web Agent Space

## Actualización de la configuración de IdP
<a name="updating-idp-configuration"></a>

Puede rotar el secreto del cliente sin desconectarlo:

1. En la consola del AWS DevOps agente, selecciona tu espacio de agente

1. Ve a la pestaña **Acceso**

1. En **Configuración del proveedor de identidad externo**, elija **Rotar el secreto del cliente**

1. Introduzca el nuevo **secreto de cliente**

1. Seleccione **Save**.

Para cambiar cualquier otro campo de configuración del IdP (como la URL del emisor, el ID de cliente o el proveedor de identidad), debe desconectar el IdP existente y configurar uno nuevo.

## Cómo acceden los usuarios a la aplicación web Agent Space
<a name="how-users-access-the-agent-space-web-app"></a>

Después de configurar la autenticación de IdP externa:
+ Comparta la URL de la aplicación web Agent Space con los usuarios autorizados
+ Cuando los usuarios acceden a la URL, se les redirige a la página de inicio de sesión de su proveedor de identidad
+ Tras introducir sus credenciales (y completar el MFA si lo ha configurado su IdP), se les redirige de nuevo a la aplicación web Agent Space
+ Las sesiones se actualizan automáticamente; consulte [Administración de sesiones para obtener](#session-management) más información

## Administración de sesiones
<a name="session-management"></a>

Las sesiones de IdP externas para la aplicación web Agent Space tienen las siguientes características:
+ **Duración de la sesión**: las sesiones del navegador duran hasta 8 horas. Esto no se puede configurar en el AWS DevOps agente. Si la duración de la sesión de su IdP supera las 8 horas, los usuarios pueden volver a autenticarse automáticamente en su próxima visita sin necesidad de introducir sus credenciales. Configure la duración de la sesión y el token de su IdP de acuerdo con los requisitos de seguridad de su organización.
+ Actualización de **credenciales: las sesiones se actualizan** automáticamente mediante los tokens de actualización del OIDC sin que los usuarios tengan que volver a autenticarse
+ **Autenticación multifactorial**: se admite cuando se configura en su proveedor de identidad. El IdP gestiona el MFA durante el inicio de sesión; no se necesita ninguna configuración adicional en el agente AWS DevOps 

### Comportamiento de cierre de sesión
<a name="logout-behavior"></a>

Cuando un usuario hace clic en **Cerrar sesión** en la aplicación web:

1. Todas las cookies de sesión se borran inmediatamente

1. Se redirige al usuario al punto de cierre de sesión OIDC del proveedor de identidad para finalizar la sesión de SSO

1. Si se configura un URI de redireccionamiento de cierre de sesión, se redirige al usuario a la página de bienvenida de la aplicación web

### Revocar el acceso de los usuarios
<a name="revoking-user-access"></a>

Para revocar inmediatamente el acceso de un usuario, puedes revocar sus sesiones directamente en el portal de administración de tu proveedor de identidad:
+ **Okta****: en la consola de administración de Okta, navega hasta **Directorio** > **Personas**, selecciona el usuario y selecciona **Más acciones** > Borrar sesiones de usuario**
+ **Microsoft Entra ID**: en el portal de Azure, vaya a **Usuarios**, seleccione el usuario y elija **Revocar sesiones**

## Consideraciones de seguridad
<a name="security-considerations"></a>

**Almacenamiento del secreto del cliente**: el secreto del cliente que proporciona durante la configuración se cifra con la clave de KMS administrada por el cliente, si la proporcionó al crear el espacio de agente, o con una clave propiedad del servicio en caso contrario. Después de la configuración inicial, nunca se devuelve en las respuestas de la API ni se muestra en la consola.

**Rotación de los secretos** de los clientes: los secretos de los clientes de Entra tienen una caducidad configurable. Configura un recordatorio para rotar el secreto antes de que caduque mediante la opción **Rotar el secreto del cliente** de la consola del AWS DevOps agente. Si el secreto caduca, los usuarios no podrán iniciar sesión hasta que se rote.

**Administración de la vida útil de los tokens**: la duración de los tokens (tokens de acceso, tokens de actualización) emitidos por su proveedor de identidad depende de la configuración de su IdP. Recomendamos configurar los tiempos de vida de los tokens adecuados en su IdP:
+ **Okta****: Configura la vida útil de los tokens en **Seguridad > **API** > Servidores** de **autorización** > Políticas de acceso**
+ **Microsoft Entra ID**: configure la vida útil de los tokens mediante políticas de [vida útil de los tokens](https://learn.microsoft.com/en-us/entra/identity-platform/configurable-token-lifetimes)

Notificación de **grupos**: no habilite la reclamación de grupos en la configuración de token de su proveedor de identidad. AWS DevOps Actualmente, el agente no utiliza la pertenencia a un grupo de su IdP.

**Identificador de usuario**: el AWS DevOps agente utiliza una afirmación específica del proveedor para identificar a los usuarios de forma exclusiva:
+ **Okta**: utiliza la `sub` afirmación del token de identificación
+ **Microsoft Entra ID**: utiliza la afirmación `oid` (identificador de objeto) del token de ID

Estos identificadores son inmutables y aparecen en los CloudTrail registros con fines de auditoría.

## Desconectar el IdP externo
<a name="disconnecting-external-idp"></a>

1. En la consola del AWS DevOps agente, seleccione su espacio de agente

1. Ve a la pestaña **Acceso**

1. En **Acceso de usuario**, selecciona **Desconectar**

1. Revise los impactos que aparecen en el cuadro de diálogo de confirmación y confirme

La desconexión permitirá:
+ Elimine la configuración de IdP del espacio de agentes
+ Impida que los usuarios inicien sesión a través del proveedor de identidad externo
+ Eliminar el historial individual de chat y artefactos asociado a las cuentas de usuario de IdP

Las sesiones de usuario activas continuarán hasta que caduquen o se produzca un error en la próxima actualización de credenciales.

## Resolución de problemas
<a name="troubleshooting"></a>
+ La **redirección al IdP falla**: compruebe que la URL del emisor coincida con el punto final de detección de OIDC de su IdP. ****En el caso de Okta, asegúrate de que el **emisor** esté configurado como **URL de Okta** (no dinámica) en la pestaña de inicio de sesión.**** Para Entra, usa el formato. `https://login.microsoftonline.com/{tenant-id}/v2.0`
+ **Acceso denegado o error de política (Okta)**: compruebe que el usuario o su grupo estén asignados a la aplicación en **Asignaciones**. Seleccione Inicio de **sesión** > Reglas de **la política de inicio de sesión**.
+ **Error de configuración del IdP después del inicio de sesión**: su proveedor de identidad no devolvió un token de actualización. Asegúrese de que el `offline_access` alcance y el tipo de concesión del token de actualización estén habilitados:
  + **Okta****: Ve a la pestaña **General** de tu aplicación y activa la casilla **Actualizar el token** en Tipo de concesión**
  + **Entra**: ve a los **permisos de la API** y asegúrate de que aparezca en `offline_access` la lista de permisos delegados
+ La **autenticación se realiza correctamente, pero la aplicación web muestra un error**: compruebe que el URI de redireccionamiento de su IdP coincida exactamente con **la URL de devolución de llamada que se muestra en AWS DevOps la** consola del agente.
+ **Fallos de autenticación**: si la notificación opcional del **grupo** está habilitada en su IdP, deshabilítela. AWS DevOps El agente no usa notificaciones grupales.
+ **El inicio de **sesión falla después de la autenticación del IdP**: en el caso de Entra, la verificación no `requestedAccessTokenVersion` está configurada `null` en el manifiesto de la aplicación.** En el caso de Okta, compruebe que la **URL del emisor sea correcta**.
+ **Página de error tras hacer clic en Cerrar sesión (Okta)****: si ves un `post_logout_redirect_uri` error después de cerrar sesión, agrégala `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome` como **URI de redirección de cierre de sesión en la pestaña General** de la aplicación de Okta.**
+ **Los usuarios permanecen en la página del proveedor de identidad después de cerrar sesión (Entra)****: para redirigir a los usuarios a la aplicación web después de cerrar sesión, añada `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome` un **URI de redireccionamiento** en la página de autenticación de la aplicación Entra.**

# Cifrado en reposo para AWS DevOps Agent
<a name="aws-devops-agent-security-encryption-at-rest-for-devops-agent"></a>

AWS DevOps El agente cifra todos los datos de los clientes en reposo. De forma predeterminada, el AWS DevOps agente utiliza las claves AWS propias para cifrar automáticamente los datos sin coste adicional. No puede ver, administrar ni auditar el uso de claves AWS propias. Sin embargo, no es necesario que tome ninguna medida para proteger estas claves. Sus datos se protegen automáticamente.

Puede optar por cifrar sus datos mediante una clave simétrica gestionada por el cliente que cree, posea y gestione en el Servicio de administración de AWS claves (AWS KMS). Como tiene el control total de esta capa de cifrado, puede realizar tareas como las siguientes:
+ Establecer y mantener políticas de claves
+ Habilitar y deshabilitar políticas de claves
+ Rotar el material criptográfico
+ Adición de etiquetas de 
+ Crear alias de clave
+ Programar la eliminación de claves

Para obtener más información, consulte [las claves administradas por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) en la *Guía AWS para desarrolladores del Servicio de administración* de claves.

**nota**  
** AWS DevOps El agente habilita automáticamente el cifrado en reposo mediante claves AWS propias para proteger los datos de los clientes sin coste alguno. Se aplican cargos de AWS KMS estándar cuando se utiliza una clave gestionada por el cliente. Para obtener más información sobre los precios, consulte los precios [del servicio de administración de AWS claves](https://aws.amazon.com/kms/pricing/).

## Claves administradas por el cliente
<a name="customer-managed-keys"></a>

Las claves administradas por el cliente son claves de KMS de su AWS cuenta que usted crea, posee y administra. Usted tiene el control total sobre estas claves de KMS, incluido el establecimiento y el mantenimiento de sus políticas clave.

Al configurar una clave gestionada por el cliente, AWS DevOps Agent la utiliza para proteger los datos confidenciales de los recursos. AWS DevOps El agente utiliza el [cifrado de sobres](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#envelope-encryption) con el conjunto de claves jerárquicas del SDK de AWS cifrado. Su clave KMS se utiliza para generar claves de sucursal, que a su vez protegen sus datos.

Puede especificar una clave administrada por el cliente al crear los siguientes recursos:
+ **Agent Space**: cifra los detalles y el contenido de Agent Space creados a partir de la aplicación web DevOps Agent relacionados con las investigaciones, las habilidades y el chat.
+ **Servicio**: cifra las credenciales de servicio de terceros en reposo.

Para configurar una clave gestionada por el cliente en AWS DevOps Agent, siga estos pasos.

### Paso 1: Crear una clave administrada por el cliente
<a name="step-1-create-a-customer-managed-key"></a>

Puede crear una clave simétrica gestionada por el cliente mediante la consola de AWS KMS o la API de AWS KMS. La clave debe cumplir los siguientes requisitos:


| Propiedad | Requisito | 
| --- | --- | 
| Tipo de clave | Simétrica | 
| Especificación de clave | SYMMETRIC\$1DEFAULT | 
| Uso de clave | ENCRYPT\$1DECRYPT | 

**nota**  
** AWS DevOps El agente solo admite claves KMS de cifrado simétrico con la especificación y el uso de la `SYMMETRIC_DEFAULT` `ENCRYPT_DECRYPT` clave. Actualmente, no se admiten las claves multirregionales ni las claves asimétricas.

Para obtener más información, consulte [Creación de una clave simétrica gestionada por el cliente en la Guía para](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) desarrolladores *de AWS Key Management Service*.

### Paso 2: Defina la política clave
<a name="step-2-set-the-key-policy"></a>

Las políticas de clave controlan el acceso a la clave administrada por el cliente. Cada clave administrada por el cliente debe tener exactamente una política de clave, que contiene instrucciones que determinan quién puede usar la clave y cómo puede utilizarla.

Su política clave debe conceder permisos tanto a la persona principal que realiza la llamada (su identidad de IAM) como al servicio de AWS DevOps agente. AWS DevOps El agente accede a su clave mediante dos conjuntos de credenciales:

1. **Sus credenciales de la persona que llama**: se utilizan para todas las operaciones sincrónicas, incluida la validación de claves, el cifrado al momento de la creación del recurso y cualquier llamada a la API que devuelva una respuesta directa a la persona que llama.

1. **AWS DevOps Agente principal:** se utiliza para operaciones asíncronas que se ejecutan en segundo plano, como las investigaciones operativas, el análisis de incidentes, la correlación de eventos y la generación de análisis de la causa raíz.

En la siguiente tabla se enumeran las acciones de KMS necesarias:


| Acción de KMS | Description (Descripción) | 
| --- | --- | 
| kms:DescribeKey | Valide la configuración clave en el momento de la creación del recurso | 
| kms:GenerateDataKey | Genere claves de cifrado de datos para el cifrado de sobres | 
| kms:Decrypt | Descifrado de datos | 
| kms:Encrypt | Cifrar datos | 
| kms:ReEncrypt | Vuelva a cifrar los datos con la misma clave o con una clave diferente | 

AWS DevOps El agente valida todos estos permisos en el momento de la configuración mediante operaciones de ejecución en seco. Si falta algún permiso, se produce un error en la solicitud, salvo una excepción.

A continuación, se muestra una política de claves de ejemplo. Sustituya los valores de los marcadores de posición por los suyos propios.

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Sid": "AllowCallerAccessViaService",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/DevOpsAgentUserRole"
      },
      "Action": [
        "kms:DescribeKey",
        "kms:GenerateDataKey*",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "aidevops.us-east-1.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowDevOpsAgentServiceDescribeKeyAccess",
      "Effect": "Allow",
      "Principal": {
        "Service": "aidevops.amazonaws.com"
      },
      "Action": [
        "kms:DescribeKey"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowDevOpsAgentAccessForAgentSpace",
      "Effect": "Allow",
      "Principal": {
        "Service": "aidevops.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*"
      ],
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:aidevops:us-east-1:111122223333:agentspace/*"
        },
        "StringLike": {
          "kms:EncryptionContext:aws-crypto-ec:aws:aidevops:arn": "arn:aws:aidevops:us-east-1:111122223333:agentspace/*"
        }
      }
    },
    {
      "Sid": "AllowDevOpsAgentAccessForService",
      "Effect": "Allow",
      "Principal": {
        "Service": "aidevops.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*"
      ],
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:aidevops:us-east-1:111122223333:service/*"
        },
        "StringLike": {
          "kms:EncryptionContext:aws-crypto-ec:aws:aidevops:arn": "arn:aws:aidevops:us-east-1:111122223333:service/*"
        }
      }
    }
  ]
}
```

La política contiene las siguientes declaraciones:
+ **AllowKeyAdministration**— Otorga al usuario raíz de la cuenta acceso administrativo completo a la clave. `111122223333`Sustitúyala por tu ID de AWS cuenta.
+ **AllowCallerAccessViaService**— Otorga a sus directores de IAM los permisos de KMS necesarios para todas las operaciones sincrónicas AWS DevOps del agente. Esto incluye la validación de claves en el momento de la creación del recurso, así como las operaciones de cifrado y descifrado para cualquier llamada a la API que devuelva una respuesta directa a la persona que llama. Esta `kms:ViaService` condición garantiza que solo se pueda utilizar la clave a través del AWS DevOps servicio de agente. `111122223333`Sustitúyala por tu ID de AWS cuenta y `us-east-1` por tu AWS región.
+ **AllowDevOpsAgentServiceAccessForAgentSpace**/**AllowDevOpsAgentServiceAccessForService**— Otorga al director del `aidevops.amazonaws.com` servicio los permisos de KMS necesarios para las operaciones asincrónicas. AWS DevOps El agente utiliza este principio de servicio para cifrar y descifrar los datos al realizar operaciones en segundo plano, como investigaciones operativas, analizar incidentes, correlacionar eventos entre servicios y generar análisis de la causa raíz. Sin este acceso, AWS DevOps Agent no puede leer los datos cifrados necesarios para llevar a cabo las investigaciones en su nombre. La `aws:SourceArn` condición restringe el acceso a las solicitudes que se originan en los recursos de su AWS DevOps agente y garantiza que el contexto de cifrado coincida con su recurso ARNs. `kms:EncryptionContext` `111122223333`Sustitúyala por tu ID de AWS cuenta y `us-east-1` por tu AWS región.

Para obtener más información sobre las políticas clave, consulte [Políticas clave de AWS KMS en](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) la *Guía AWS para desarrolladores del Servicio de administración* de claves.

### Paso 3: Especifique la clave al crear un recurso
<a name="step-3-specify-the-key-when-creating-a-resource"></a>

Tras crear la clave y configurar la política de claves, puede especificarla al crear los recursos del AWS DevOps agente.

#### Consola
<a name="console"></a>

Para configurar una clave gestionada por el cliente al crear un espacio de agente en la consola:

1. Abra la consola del AWS DevOps agente.

1. Seleccione **Crear espacio de agente** o **Registrar servicio**.

1. Introduzca los detalles del espacio de agentes (nombre, descripción y función de IAM).

1. Amplíe la sección **Configuración avanzada**.

1. En **Tipo de clave de cifrado**, selecciona **Clave gestionada por el cliente**.

1. Elija una clave de KMS de la lista desplegable o introduzca un ARN de clave de KMS.

1. Revise la política clave que se muestra en la sección **Política clave ampliable**. Asegúrese de haber adjuntado esta política a su clave de KMS. Puede usar el botón de copiar para copiar la política.

1. Complete el resto de la configuración y elija **Crear**.

**nota**  
**Si no ve la clave de KMS en la lista desplegable, compruebe que la clave cumple los requisitos del [paso 1](#step-1-create-a-customer-managed-key) y que dispone `kms:ListKeys` de `kms:DescribeKey` los permisos necesarios.

#### API
<a name="api"></a>

##### Crear un espacio de agente con una clave gestionada por el cliente
<a name="creating-an-agent-space-with-a-customer-managed-key"></a>

Especifique el `kmsKeyArn` parámetro al crear un espacio de agentes. El valor debe ser el ARN completo de la clave KMS.

```
{
  "name": "my-agent-space",
  "description": "An encrypted agent space",
  "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
```

##### Registrar un servicio con una clave gestionada por el cliente
<a name="registering-a-service-with-a-customer-managed-key"></a>

Especifique el `kmsKeyArn` parámetro al registrar un servicio. El valor debe ser el ARN completo de la clave KMS. Este parámetro es compatible con todos los tipos de servicios, incluidos los servidores Dynatrace, ServiceNow, PagerDuty GitLab GitHub, y MCP.

```
{
  "service": "dynatrace",
  "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "serviceDetails": { ... }
}
```

**nota**  
**Debe especificar la clave administrada por el cliente en el momento de crear el recurso. No puede añadir ni cambiar la clave gestionada por el cliente para un recurso existente.

## AWS DevOps Contexto de cifrado del agente
<a name="aws-devops-agent-encryption-context"></a>

Un [contexto de cifrado](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) es un conjunto de pares clave-valor no secretos que contienen información contextual adicional sobre los datos. AWS El KMS usa el contexto de cifrado como [datos autenticados adicionales para admitir el cifrado autenticado](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad). Al incluir un contexto de cifrado en una solicitud de cifrado de datos, AWS KMS vincula el contexto de cifrado a los datos cifrados. Para descifrar los datos, debe incluir el mismo contexto de cifrado en la solicitud.

AWS DevOps El agente utiliza el siguiente contexto de cifrado en todas las operaciones criptográficas:

```
{
  "aws-crypto-ec:aws:aidevops:arn": "arn:aws:aidevops:{region}:{accountId}:{resourceType}/{resourceId}"
}
```

El valor del contexto de cifrado es el ARN del recurso de AWS DevOps agente que se está cifrando. Puede utilizar este contexto de cifrado en las condiciones de su política de claves y en AWS CloudTrail los registros para auditar cómo se utiliza su clave.

## Administración de claves
<a name="key-management"></a>

Si deshabilita o programa la eliminación de su clave KMS, el AWS DevOps agente no podrá descifrar sus datos. Esto provoca `AccessDeniedException` errores en las operaciones que leen datos cifrados.

**importante**  
**Si decide usar una clave administrada por el cliente, usted es responsable de administrar la clave y sus permisos. Si la clave se deshabilita o se elimina, o si el AWS DevOps agente pierde el permiso para usarla, usted pierde el acceso a los datos cifrados.

En la siguiente tabla se describen los escenarios de error más comunes:


| Action | Impact | 
| --- | --- | 
| Permisos de política clave revocados | AccessDeniedExceptionsobre las operaciones de cifrado y descifrado | 
| La clave KMS está deshabilitada | DisabledExceptionen las operaciones de cifrado y descifrado | 
| La eliminación de la clave KMS está programada | KMSInvalidStateExceptionsobre las operaciones de cifrado y descifrado | 
| Se elimina la clave KMS | Pérdida permanente de datos: los datos cifrados no se pueden recuperar | 

Antes de deshabilitar o eliminar una clave:

1. Compruebe que ningún recurso del AWS DevOps agente activo dependa de la clave.

1. Considere la posibilidad de deshabilitar primero la clave para comprobar el impacto antes de programar su eliminación.

1. AWS KMS impone un período de espera mínimo antes de eliminar la clave, lo que le da tiempo para cancelarla si es necesario.

**Nota:** El AWS DevOps agente no vuelve a cifrar automáticamente los datos con una clave nueva. Si necesita cambiar a una nueva clave gestionada por el cliente, debe crear un nuevo recurso con la nueva clave.

## Supervisión de sus claves de cifrado
<a name="monitoring-your-encryption-keys"></a>

Cuando utiliza una clave gestionada por el cliente con AWS DevOps Agent, puede utilizarla [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)para realizar un seguimiento de las solicitudes que el AWS DevOps agente envía a AWS KMS.

Puede filtrar CloudTrail los eventos por:
+ **Fuente del evento**: `kms.amazonaws.com`
+ **Clave de contexto de cifrado** — `aws-crypto-ec:aws:aidevops:arn`
+ **ARN clave: el ARN** clave gestionado por el cliente en los parámetros de la solicitud

Para obtener más información, consulte [Registrar las llamadas a la API de AWS KMS AWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html) en la Guía para *desarrolladores del servicio de administración de AWS claves*.

# Puntos de enlace de la VPC (AWS PrivateLink)
<a name="aws-devops-agent-security-vpc-endpoints-aws-privatelink"></a>

Se puede utilizar AWS PrivateLink para crear una conexión privada entre la VPC y AWS DevOps el agente. Puede acceder al AWS DevOps agente como si estuviera en su VPC, sin utilizar una puerta de enlace a Internet, un dispositivo NAT, una conexión VPN o una conexión Direct Connect. Las instancias de su VPC no necesitan direcciones IP públicas para acceder AWS DevOps al agente.

Esta conexión privada se establece mediante la creación de un punto final de interfaz, con la tecnología de AWS PrivateLink. Creamos una interfaz de red de punto de conexión en cada subred habilitada para el punto de conexión de interfaz. Se trata de interfaces de red administradas por el solicitante que sirven como punto de entrada para el tráfico destinado al agente. AWS DevOps 

*Para obtener más información, consulte [Acceder a AWS los servicios AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html) en la Guía.AWS PrivateLink *

## Consideraciones sobre los puntos AWS DevOps finales de Agent VPC
<a name="considerations-for-aws-devops-agent-vpc-endpoints"></a>

*Antes de configurar un punto final de interfaz para AWS DevOps Agent, consulte [las consideraciones](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#considerations-interface-endpoints) de la AWS PrivateLink guía.*

AWS DevOps El agente admite la realización de llamadas a la API a través de los siguientes puntos finales de VPC.


| Categoría | Sufijo de punto de conexión | 
| --- | --- | 
| AWS DevOps Acciones de la API del plano de control del agente | aidevops | 
| AWS DevOps Operaciones en tiempo de ejecución del agente | aidevops-dataplane | 
| AWS DevOps Eventos de Agent Webhook | event-ai | 

## Cree un punto final de interfaz para el agente AWS DevOps
<a name="create-an-interface-endpoint-for-aws-devops-agent"></a>

Puede crear un punto final de interfaz para el AWS DevOps agente mediante la consola de Amazon VPC o la interfaz de línea de AWS comandos (AWS CLI). Para obtener más información, consulte [Creación de un punto de conexión de interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) en la *Guía de AWS PrivateLink *.

Cree un punto final de interfaz para el AWS DevOps agente con los siguientes nombres de servicio:
+ com.amazonaws. \$1región\$1 .aidevops
+ com.amazonaws. \$1región\$1 .aidevops-dataplane
+ com.amazonaws. \$1región\$1 .event-ai

Cuando se crea el punto de conexión, tiene la opción de habilitar un nombre de host de DNS privado. Habilite esta configuración seleccionando **Enable Private DNS Name** (Habilitar nombre de DNS privado) en la consola de VPC al crear el punto de conexión de la VPC.

Si habilita el DNS privado para el punto final de la interfaz, puede realizar solicitudes de API al AWS DevOps agente utilizando su nombre de DNS regional predeterminado. En el siguiente ejemplo, se muestra el formato del nombre DNS regional predeterminado.
+ aidevops. \$1región\$1 .api.aws
+ aidevops-dataplane. \$1region\$1 .amazonaws.com
+ event-ai. \$1región\$1 .api.aws

## Creación de una política de puntos de conexión para el punto de conexión de interfaz
<a name="create-an-endpoint-policy-for-your-interface-endpoint"></a>

Una política de punto de conexión es un recurso de IAM que puede adjuntar a un punto de conexión de interfaz. La política de puntos finales predeterminada permite el acceso total al AWS DevOps agente a través del punto final de la interfaz. Para controlar el acceso permitido al AWS DevOps agente desde su VPC, adjunte una política de punto final personalizada al punto final de la interfaz.

Una política de punto de conexión especifica la siguiente información:
+ Los principales que pueden realizar acciones (AWS cuentas, usuarios de IAM y funciones de IAM).
+ Las acciones que se pueden realizar.
+ El recurso en el que se pueden realizar las acciones.

Para obtener más información, consulte [Control del acceso a los servicios con políticas de punto de conexión](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) en la *Guía del usuario de AWS PrivateLink *.