

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# AWS DevOps Sécurité des agents
<a name="aws-devops-agent-security"></a>

Ce document fournit des informations sur les considérations de sécurité, la protection des données, les contrôles d'accès et les fonctionnalités de conformité de AWS DevOps l'Agent. Utilisez ces informations pour comprendre comment AWS DevOps l'agent est conçu pour répondre à vos exigences de sécurité et de conformité.

## Sécurité à plusieurs niveaux
<a name="multi-layered-security"></a>

AWS DevOps L'agent implémente la sécurité à plusieurs niveaux. Même si des autorisations plus larges sont accordées au rôle IAM de l'agent, celui-ci applique ses propres contrôles d'accès internes afin de limiter la portée de ses actions. Par exemple, si un client ajoute une politique IAM d'accès complète à Amazon S3 au rôle IAM de l' AWS DevOps agent, celui-ci veillera à ce que seuls les journaux lus après le `AWSLogs` préfixe soient lus à des fins de résolution des problèmes.

Nous recommandons de suivre le principe du moindre privilège lors de la configuration des autorisations IAM pour AWS DevOps l'agent et de mettre en œuvre la sécurité à plusieurs niveaux. Une défense approfondie garantit qu'aucune erreur de configuration ne peut compromettre la sécurité de votre environnement.

## Espaces réservés aux agents
<a name="agent-spaces"></a>

Les espaces d'agent constituent la principale limite de sécurité dans AWS DevOps Agent. Chaque espace d'agent :
+ Fonctionne indépendamment avec ses propres configurations et autorisations
+ Définit AWS les comptes et les ressources auxquels l'agent peut accéder
+ Établit des connexions à des plateformes tierces

Les espaces d'agent maintiennent une isolation stricte afin de garantir la sécurité et d'empêcher tout accès involontaire entre différents environnements ou équipes.

## Traitement régional et flux de données
<a name="regional-processing-and-data-flow"></a>

AWS DevOps L'agent opère dans le monde entier avec des capacités de traitement régionales. L'agent récupère les données opérationnelles des AWS régions de tous les AWS comptes autorisés à accéder au sein de l'espace agent configuré. Cette collecte de données multi-régions entre comptes garantit une analyse complète des incidents tout en respectant les limites géographiques pour le traitement des inférences.

### Utilisation d'Amazon Bedrock et inférence entre régions
<a name="amazon-bedrock-usage-and-cross-region-inference"></a>

AWS DevOps L'agent sélectionnera automatiquement la région optimale de votre zone géographique pour traiter vos demandes d'inférence. Cela permet d'optimiser les ressources informatiques disponibles, la disponibilité des modèles et d'offrir la meilleure expérience client. Vos données resteront stockées uniquement dans la région où votre espace agent a été créé. Toutefois, les demandes de saisie et les résultats de sortie peuvent être traités en dehors de cette région, comme décrit dans la liste suivante. Toutes les données seront transmises chiffrées sur le réseau sécurisé d’Amazon.

AWS DevOps L'agent acheminera en toute sécurité vos demandes d'inférence vers les ressources informatiques disponibles dans la zone géographique d'origine de la demande, comme suit :
+ Les demandes d'inférence provenant de l'Union européenne seront traitées au sein de l'Union européenne.
+ Les demandes d'inférence provenant des États-Unis seront traitées aux États-Unis.
+ Les demandes d'inférence provenant de l'Australie seront traitées en Australie.
+ Les demandes d'inférence provenant du Japon seront traitées au Japon.
+ Si une demande d'inférence provient d'une zone non répertoriée, elle sera traitée par défaut aux États-Unis d'Amérique.
+ DevOps Agent et Bedrock ne sont pas concernés par les politiques relatives aux clients énoncées dans Service Control Policies (SCPs) ou Control Tower qui limitent le contenu client à des régions spécifiques
+ Bedrock peut utiliser des régions autres que la région d'origine au sein de votre zone géographique pour effectuer une inférence apatride afin d'optimiser les performances et la disponibilité

## Gestion des identités et des accès
<a name="identity-and-access-management"></a>

### Méthodes d’authentification
<a name="authentication-methods"></a>

AWS DevOps L'agent propose deux méthodes d'authentification pour se connecter à l'application Web AWS DevOps Agent Space :
+ **AWS Intégration à Identity Center** : la principale méthode d'authentification utilise la OAuth version 2.0 avec une authentification basée sur les sessions à l'aide de cookies HTTP uniquement. AWS Identity Center peut se fédérer avec des fournisseurs d'identité externes via les protocoles OIDC et SAML standard, notamment des fournisseurs tels qu'Okta, Ping Identity et Microsoft Entra ID. Cette méthode prend en charge l'authentification multifactorielle par le biais de votre fournisseur d'identité. AWS Identity Center utilise par défaut des sessions d'une durée maximale de 12 heures et peut être configuré selon la durée souhaitée.
+ **Lien d'authentification IAM** : une autre méthode fournit un accès direct à l'application Web depuis la console de AWS gestion à l'aide de jetons JWT dérivés d'une session de console de gestion existante AWS . Cette option est utile pour évaluer l' AWS DevOps agent avant de mettre en œuvre l'intégration complète d'Identity Center, ainsi que pour obtenir un accès administratif si l'application Web de l' AWS DevOps agent devient inaccessible via l'authentification basée sur Identity Center. Les séances sont limitées à 10 minutes.

### Rôles IAM
<a name="iam-roles"></a>

AWS DevOps L'agent utilise les rôles IAM pour définir les autorisations d'accès :
+ **Rôle de compte principal** : accorde à l'agent l'accès aux ressources du AWS compte sur lequel vous créez l'espace d'agent ainsi que l'accès aux rôles de compte secondaires.
+ **Rôles de compte secondaires** — Permet à l'agent d'accéder aux ressources de AWS comptes supplémentaires connectés à l'espace agent.
+ **Rôle d'application Web** — Permet aux utilisateurs d'accéder aux données et aux résultats des enquêtes de l' AWS DevOps agent dans l'application Web.

Ces rôles doivent être configurés selon le principe du moindre privilège, en accordant uniquement les autorisations de lecture seule nécessaires aux enquêtes.

## Protection des données
<a name="data-protection"></a>

### Chiffrement des données
<a name="data-encryption"></a>

AWS DevOps L'agent chiffre toutes les données des clients :
+ **Chiffrement au repos** : toutes les données sont AWS chiffrées à l'aide de clés gérées.
+ **Chiffrement en transit** : tous les journaux, indicateurs, éléments de connaissances, métadonnées des tickets et autres données récupérés sont chiffrés pendant le transfert au sein du réseau privé de l'agent et vers des réseaux externes.

### Stockage et conservation des données
<a name="data-storage-and-retention"></a>

Les données sont stockées dans la région où votre espace d'agent a été créé, tandis que le traitement des inférences peut avoir lieu dans votre zone géographique, comme décrit dans la section sur l'utilisation d'Amazon Bedrock ci-dessus.

### Informations personnelles identifiables (PII)
<a name="personal-identifiable-information-pii"></a>

AWS DevOps L'agent ne filtre pas les informations personnelles lorsqu'il résume les données collectées lors d'enquêtes, d'évaluations de recommandations ou de réponses au chat. Il est recommandé de supprimer les données d'identification personnelle avant de les stocker dans des journaux d'observabilité.

## Journal de l'agent et journalisation des audits
<a name="agent-journal-and-audit-logging"></a>

### Journal de l'agent
<a name="agent-journal"></a>

Les fonctionnalités d'investigation et de prévention des incidents tiennent à jour des journaux détaillés qui :
+ Enregistrez chaque étape de raisonnement et chaque action entreprise
+ Créez une transparence totale dans les processus décisionnels des agents
+ Ne peut pas être modifié par les agents une fois enregistré, ce qui permet de minimiser les attaques telles que l'injection rapide pour masquer des actions importantes
+ Inclure tous les messages de chat de la page d'investigation

### AWS CloudTrail intégration
<a name="aws-cloudtrail-integration"></a>

Tous les appels d'API de l' AWS DevOps agent sont automatiquement AWS CloudTrail capturés par le AWS compte d'hébergement. À l'aide des informations collectées par CloudTrail, vous pouvez déterminer :
+ La demande qui a été faite à l'agent
+ L’adresse IP à partir de laquelle la demande a été effectuée
+ La personne ayant effectué la demande
+ Le moment où la demande a été formulée

## Protection contre les injections rapides
<a name="prompt-injection-protection"></a>

Une attaque par injection rapide se produit lorsqu'un attaquant intègre des instructions malveillantes dans des données externes, telles qu'une page Web ou un document, qu'un système d'IA générative traitera ultérieurement. AWS DevOps L'agent consomme nativement de nombreuses sources de données dans le cadre de ses opérations normales, notamment les journaux, les balises de ressources et d'autres données opérationnelles. AWS DevOps L'agent protège contre les attaques par injection rapide grâce aux mesures de protection ci-dessous, mais il est important de s'assurer que toutes les sources de données connectées et l'accès des utilisateurs à ces sources de données sont fiables. Voir la section [Modèle de responsabilité partagée](#aws-devops-agent-security) pour en savoir plus.

Garanties d'injection rapide :
+ **Capacités d'écriture limitées** — Les outils mis à la disposition de l'agent ne sont pas en mesure de modifier les ressources, à l'exception de l'ouverture de tickets et de demandes d'assistance. Cela empêche les instructions malveillantes de modifier votre infrastructure ou vos applications.
+ **Application des limites de compte** — AWS DevOps L'agent n'opère que dans les limites autorisées par les rôles assignés à l'agent dans le compte principal et le AWS compte secondaire connecté. L'agent ne peut pas accéder aux ressources ou les modifier en dehors de son périmètre configuré.
+ **Protections de sécurité basées sur l'IA** — AWS DevOps L'agent utilise des modèles dotés de protections de niveau 3 (ASL-3) basées sur l'IA. Ces protections incluent des classificateurs qui détectent et empêchent les attaques par injection rapide avant qu'elles n'affectent le comportement des agents.
+ **Piste d'audit immuable** : le journal de l'agent enregistre chaque étape de raisonnement et chaque action entreprise. Les entrées du journal ne peuvent pas être modifiées par l'agent une fois enregistrées, ce qui empêche les attaques par injection rapide de masquer des actions malveillantes.

Bien que AWS DevOps l'agent fournisse plusieurs niveaux de protection contre les attaques par injection rapide, certaines configurations peuvent augmenter les risques :
+ **Outils de serveur MCP personnalisés** — La fonctionnalité bring-your-own MCP vous permet d'introduire des outils personnalisés dans l'agent, ce qui peut offrir des opportunités supplémentaires d'injection rapide. Les outils personnalisés peuvent ne pas avoir les mêmes contrôles de sécurité que les outils d' AWS DevOps agent natifs, et des instructions malveillantes peuvent potentiellement exploiter ces outils de manière involontaire. Voir la section [Modèle de responsabilité partagée](#aws-devops-agent-security) pour en savoir plus.
+ **Attaques d'utilisateurs autorisés** — Les utilisateurs autorisés à opérer dans les limites du AWS compte ou des outils connectés ont plus de chances de tenter une attaque contre l'agent. Ces utilisateurs peuvent avoir la possibilité de modifier les sources de données consommées par l'agent, telles que les journaux ou les balises de ressources, afin de faciliter l'intégration d'instructions malveillantes que l'agent traitera.

Pour atténuer ces risques :

1. Passez en revue et testez attentivement les serveurs MCP personnalisés avant de les déployer dans Agent Spaces.

   1. Assurez-vous qu'ils ne sont autorisés à effectuer que des actions en lecture seule

   1. Vérifiez que les utilisateurs des outils externes auxquels accèdent les serveurs MCP sont des entités fiables, car les AWS DevOps agents interagissant avec MCP s'appuient sur la relation de confiance implicite établie entre ces utilisateurs d'outils et l'agent AWS DevOps 

1. Appliquer le principe du moindre privilège lorsque vous accordez aux utilisateurs l'accès aux systèmes qui fournissent des données à l'agent

1. Vérifiez régulièrement quels serveurs MCP sont connectés à vos agents Spaces

1. Étant donné que tout contenu extrait de la liste d'autorisation URLs peut tenter de manipuler le comportement de l'agent, n'incluez que des sources fiables dans votre liste d'autorisation.

## Sécurité de l'intégration
<a name="integration-security"></a>

AWS DevOps L'agent prend en charge plusieurs types d'intégration, chacun ayant son propre modèle de sécurité :
+ Intégrations **bidirectionnelles natives : intégrations** intégrées qui peuvent envoyer des données à l'agent et recevoir des mises à jour de la part de l'agent. Cela utilise les méthodes d'authentification du fournisseur
+ Serveurs **MCP : serveurs** Remote Model Context Protocol qui utilisent des flux d'authentification OAuth 2.0 et des clés d'API pour communiquer en toute sécurité avec des systèmes externes.
+ Déclencheurs **Webhook : déclencheurs** d'investigation provenant de services distants tels que des tickets ou des systèmes d'observabilité. Les webhooks utilisent le code d'authentification des messages basé sur le hachage (HMAC) pour des raisons de sécurité.
+ **Communication sortante** : les intégrations telles que Slack et les systèmes de billetterie reçoivent des mises à jour de l'agent mais ne prennent pas encore en charge la communication bidirectionnelle.

### Fournisseurs d'enregistrement
<a name="registration-providers"></a>

Certains outils externes sont authentifiés au niveau du compte et partagés entre tous les espaces d'agent du compte. Lorsque vous enregistrez ces outils, vous vous authentifiez une fois au niveau du compte, puis chaque espace agent peut se connecter à des ressources spécifiques au sein de cette connexion enregistrée.

Les outils suivants utilisent l'enregistrement au niveau du compte :
+ **GitHub**— Utilise OAuth le flux pour l'authentification. Une fois enregistré GitHub au niveau du compte, chaque agent Space peut se connecter à des référentiels spécifiques au sein de votre GitHub organisation.
+ **Dynatrace** — Utilise OAuth l'authentification par jeton. Après avoir enregistré Dynatrace au niveau du compte, chaque agent Space peut se connecter à des environnements Dynatrace ou à des configurations de surveillance spécifiques.
+ **Slack** — Utilise l'authentification par OAuth jeton. Après avoir enregistré Slack au niveau du compte, chaque espace agent peut se connecter à des chaînes Slack spécifiques.
+ **Datadog** — Utilise MCP avec un OAuth flux pour l'authentification. Après avoir enregistré Datadog au niveau du compte, chaque Agent Space peut se connecter à des ressources de supervision Datadog spécifiques.
+ **New Relic** — Utilise l'authentification par clé d'API. Après avoir enregistré New Relic au niveau du compte, chaque agent Space peut se connecter à des configurations de surveillance New Relic spécifiques.
+ **Splunk** — Utilise l'authentification par jeton porteur. Après avoir enregistré Splunk au niveau du compte, chaque agent Space peut se connecter à des sources de données Splunk spécifiques.
+ **GitLab**— Utilise l'authentification par jeton d'accès. Une fois enregistré GitLab au niveau du compte, chaque agent Space peut se connecter à des GitLab référentiels spécifiques.
+ **ServiceNow**— Utilise key/token l'authentification OAuth du client. Après s'être enregistré ServiceNow au niveau du compte, chaque espace agent peut se connecter à des ServiceNow instances ou à des files d'attente de tickets spécifiques.
+ **Serveurs MCP distants accessibles au grand public** : utilisez le OAuth flux pour l'authentification. Après avoir enregistré un serveur MCP distant au niveau du compte, chaque agent Space peut se connecter à des ressources spécifiques exposées par ce serveur.

## La connectivité réseau
<a name="network-connectivity"></a>

AWS DevOps L'agent se connecte à vos systèmes tiers et à vos serveurs MCP distants pour effectuer des enquêtes et d'autres opérations.

### Trafic entrant de l' AWS DevOps agent vers vos systèmes
<a name="inbound-traffic-from-aws-devops-agent-to-your-systems"></a>

AWS DevOps L'agent initie des connexions sortantes vers vos systèmes tiers et vos serveurs MCP distants, qui arrivent sous forme de trafic entrant vers votre infrastructure. La façon dont vous sécurisez ce trafic dépend de la manière dont vos outils sont hébergés :
+ **Outils hébergés en privé** : si vos outils sont accessibles depuis un AWS VPC, vous pouvez utiliser les *connexions privées* des AWS DevOps agents pour isoler le trafic des AWS réseaux et le maintenir hors de l'Internet public. Pour de plus amples informations, veuillez consulter [Connexion à des outils hébergés en privé](configuring-capabilities-for-aws-devops-agent-connecting-to-privately-hosted-tools.md).
+ **Outils hébergés publiquement** : si vos outils sont accessibles via Internet public et utilisent des listes d'adresses IP autorisées ou des règles de pare-feu, vous devez autoriser le trafic entrant provenant des adresses IP sources des AWS DevOps agents suivantes :
  + Asie-Pacifique (Sydney) (ap-southeast-2)
    + `13.237.95.197`
    + `13.238.84.102`
  + Asie-Pacifique (Tokyo) (ap-northeast-1)
    + `13.192.12.233`
    + `35.74.181.230`
    + `57.183.50.158`
  + Europe (Francfort) (eu-central-1)
    + `18.158.110.140`
    + `52.57.96.160`
    + `52.59.55.56`
  + Europe (Irlande) (eu-west-1)
    + `34.251.85.24`
    + `52.30.157.157`
    + `52.51.192.222`
  + USA Est (Virginie du Nord) (us-east-1)
    + `34.228.181.128`
    + `44.219.176.187`
    + `54.226.244.221`
  + USA Ouest (Oregon) (us-west-2)
    + `34.212.16.133`
    + `52.89.67.212`
    + `54.187.135.61`

### Trafic sortant de votre AWS DevOps VPC vers l'agent
<a name="outbound-traffic-from-your-vpc-to-aws-devops-agent"></a>

Pour le trafic sortant de votre AWS VPC AWS DevOps vers l'agent (par exemple, [Invocation de DevOps l'agent via Webhook](configuring-capabilities-for-aws-devops-agent-invoking-devops-agent-through-webhook.md) en utilisant), vous pouvez utiliser des points de terminaison VPC pour isoler ce trafic réseau des réseaux. AWS Pour de plus amples informations, veuillez consulter [Points de terminaison d'un VPC AWS PrivateLink](aws-devops-agent-security-vpc-endpoints-aws-privatelink.md).

## Modèle de responsabilité partagée
<a name="shared-responsibility-model"></a>

### AWS responsabilités
<a name="aws-responsibilities"></a>

AWS est chargé de :
+ Maintien de la sécurité des données récupérées par l'agent
+ Sécurisation des outils natifs mis à la disposition de l'agent
+ Protection de l'infrastructure qui exécute AWS DevOps l'agent

### Responsabilités client
<a name="customer-responsibilities"></a>

Les clients sont responsables de :
+ Gestion de l'accès des utilisateurs à l'espace des agents
+ Limiter l'accès aux utilisateurs fiables des systèmes externes qui fournissent des entrées à l'agent, tels que les services et les ressources qui produisent des journaux, CloudTrail des événements, des tickets, etc., qui peuvent être utilisés pour tenter une injection rapide malveillante.
+ Assurez-vous que toutes les sources de données connectées disposent de données fiables peu susceptibles d'être utilisées pour tenter des attaques par injection rapide
+ Garantir le fonctionnement sécurisé des intégrations de serveurs bring-your-own MCP
+ S'assurer que les rôles IAM attribués à l'agent sont correctement définis
+ Rédaction des données d'identification personnelle avant de les stocker dans les journaux d'observabilité et autres sources de données des agents
+ Respect de la pratique recommandée consistant à n'accorder des autorisations en lecture seule qu'aux sources de données connectées, y compris bring-your-own les serveurs MCP

## Utilisation des données
<a name="data-usage"></a>

AWS n'utilise pas les données des agents, les messages de chat ou les données provenant de sources de données intégrées pour entraîner des modèles ou améliorer le produit. The AWS DevOps Agent Space utilise les commentaires des clients intégrés au produit pour améliorer les réponses et les enquêtes des agents, mais AWS ne les utilise pas pour améliorer le service lui-même.

## Conformité d’
<a name="compliance"></a>

Lors de la version préliminaire, AWS DevOps l'agent n'est pas conforme aux normes telles que SOC 2, PCI-DSS, ISO 27001 ou FedRAMP. AWS annoncera les certifications de conformité qui seront disponibles ultérieurement.

# DevOps Autorisations IAM de l'agent
<a name="aws-devops-agent-security-devops-agent-iam-permissions"></a>

AWS DevOps L'agent utilise des actions AWS Identity and Access Management (IAM) spécifiques au service pour contrôler l'accès à ses fonctionnalités et capacités. Ces actions déterminent ce que les utilisateurs peuvent faire dans la console AWS DevOps Agent et l'Operator Web App. Cela est distinct des autorisations d'API de AWS service que l'agent lui-même utilise pour étudier vos ressources.

Pour plus d'informations sur la limitation de l'accès des agents, voir [Limiter l'accès des agents dans un AWS compte.](https://docs.aws.amazon.com/devopsagent/latest/userguide/aws-devops-agent-security-limiting-agent-access-in-an-aws-account.html)

## Actions de gestion de l'espace agent
<a name="agent-space-management-actions"></a>

Ces actions contrôlent l'accès à la configuration et à la gestion de l'espace agent :
+ **aidevops : GetAgentSpace** — Permet aux utilisateurs de consulter les détails d'un espace agent, notamment sa configuration, son statut et les comptes associés. Les utilisateurs ont besoin de cette autorisation pour accéder à un espace d'agent dans la console AWS de gestion.
+ **aidevops : GetAssociation** — Permet aux utilisateurs d'afficher les détails d'une association de comptes spécifique, notamment la configuration du rôle IAM et l'état de la connexion.
+ **aidevops : ListAssociations** — Permet aux utilisateurs de répertorier toutes les associations de AWS comptes configurées pour un espace agent, y compris les comptes principaux et secondaires.

## Actions d'investigation et d'exécution
<a name="investigation-and-execution-actions"></a>

Ces actions contrôlent l'accès aux fonctionnalités d'enquête sur les incidents :
+ **aidevops : ListExecutions** — Permet aux utilisateurs de consulter les métadonnées d'exécution, notamment l'identifiant, le statut, etc., pour les enquêtes, les mesures d'atténuation, les évaluations et les conversations par chat associées à une tâche.
+ **aidevops : ListJournalRecords** — Permet aux utilisateurs d'accéder à des journaux détaillés qui indiquent les étapes de raisonnement de l'agent, les actions entreprises et les sources de données consultées lors d'une enquête, d'une atténuation, d'une évaluation et d'une conversation par chat. Cela est utile pour comprendre comment l'agent est parvenu à ses conclusions.

## Actions de gestion du chat
<a name="chat-management-actions"></a>

Le chat nécessite les autorisations IAM suivantes pour fonctionner :
+ **aidevops : ListChats** — Permet aux utilisateurs de répertorier et d'accéder à l'historique des conversations par chat.
+ **aidevops : CreateChat** — Permet aux utilisateurs de créer de nouvelles conversations par chat.
+ **aidevops : SendMessage** — Permet aux utilisateurs de soumettre des requêtes et de recevoir des réponses en streaming.

## Actions de topologie et de découverte
<a name="topology-and-discovery-actions"></a>

Ces actions contrôlent l'accès aux fonctionnalités de mappage des ressources de l'application :
+ **aidevops : DiscoverTopology** — Permet aux utilisateurs de déclencher la découverte de la topologie et le mappage d'un espace agent. Cette action lance le processus d'analyse des AWS comptes et de création de la topologie des ressources de l'application.

## Actions de prévention et de recommandation
<a name="prevention-and-recommendation-actions"></a>

Les actions suivantes contrôlent l'accès à la fonctionnalité de prévention :
+ **aidevops : ListGoals** — Permet aux utilisateurs de visualiser les buts et objectifs de prévention poursuivis par l'agent en fonction des récents modèles d'incidents.
+ **aidevops : ListRecommendations** — Permet aux utilisateurs de consulter toutes les recommandations générées par la fonctionnalité de prévention, y compris leur priorité et leur catégorie.
+ **aidevops : GetRecommendation** — Permet aux utilisateurs de consulter des informations détaillées sur une recommandation spécifique, y compris les incidents qu'elle aurait évités et les conseils de mise en œuvre.

## Actions de gestion des tâches en attente
<a name="backlog-task-management-actions"></a>

Ces actions contrôlent la capacité à gérer les recommandations sous forme de tâches en attente :
+ **aidevops : CreateBacklogTask** — Permet aux utilisateurs de créer une tâche d'enquête sur les incidents ou d'évaluation de la prévention.
+ **aidevops : UpdateBacklogTask** — Permet aux utilisateurs d'approuver un plan d'atténuation ou d'annuler une enquête ou une évaluation en cours.
+ **aidevops : GetBacklogTask** — Permet aux utilisateurs de récupérer les détails d'une tâche spécifique.
+ **aidevops : ListBacklogTasks** — Permet aux utilisateurs de répertorier les tâches d'un espace agent, filtrées par type de tâche, statut, priorité ou heure de création.

## Actions de gestion des connaissances
<a name="knowledge-management-actions"></a>

Ces actions contrôlent la possibilité d'ajouter et de gérer des connaissances personnalisées que l'agent peut utiliser au cours des enquêtes :
+ **aidevops : CreateKnowledgeItem** — Permet aux utilisateurs d'ajouter des éléments de connaissances personnalisés, tels que des compétences, des guides de dépannage ou des informations spécifiques à l'application auxquelles l'agent doit se référer.
+ **aidevops : ListKnowledgeItems** — Permet aux utilisateurs de visualiser tous les éléments de connaissances configurés pour un espace agent.
+ **aidevops : GetKnowledgeItem** — Permet aux utilisateurs de récupérer les détails d'un élément de connaissance spécifique.
+ **aidevops : UpdateKnowledgeItem** — Permet aux utilisateurs de modifier les éléments de connaissances existants pour maintenir les informations à jour.
+ **aidevops : DeleteKnowledgeItem** — Permet aux utilisateurs de supprimer les éléments de connaissances qui ne sont plus pertinents.

## AWS Support aux actions d'intégration
<a name="aws-support-integration-actions"></a>

Ces actions contrôlent l'intégration avec les dossiers de AWS Support :
+ **aidevops : InitiateChatForCase** — Permet aux utilisateurs de démarrer une session de chat avec le AWS Support directement à partir d'une enquête, en fournissant automatiquement le contexte de l'incident.
+ **aidevops : EndChatForCase** — Permet aux utilisateurs de mettre fin à une session de discussion active sur un dossier AWS Support.
+ **aidevops : DescribeSupportLevel** — Permet aux utilisateurs de vérifier le niveau du plan de AWS support du compte afin de déterminer les options de support disponibles.

## Actions d'utilisation et de surveillance
<a name="usage-and-monitoring-actions"></a>

Ces actions contrôlent l'accès aux informations d'utilisation :
+ **aidevops : GetAccountUsage** — Permet aux utilisateurs de consulter le quota mensuel de l' AWS DevOps agent pour les heures d'investigation, les heures d'évaluation de la prévention et les demandes de chat, ainsi que l'utilisation du mois en cours.

## Exemples de politiques IAM courantes
<a name="common-iam-policy-examples"></a>

### Politique administrateur
<a name="administrator-policy"></a>

Cette politique accorde un accès complet à toutes les fonctionnalités de AWS DevOps l'agent :

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

### Politique de l'opérateur
<a name="operator-policy"></a>

Cette politique donne accès aux fonctionnalités d'investigation et de prévention sans fonctionnalités administratives :

```
{
  "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": "*"
    }
  ]
}
```

### Politique de lecture seule
<a name="read-only-policy"></a>

Cette politique accorde un accès en lecture seule aux enquêtes et aux recommandations :

```
{
  "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": "*"
    }
  ]
}
```

## Utilisation de rôles liés à un service pour l'agent AWS DevOps
<a name="using-service-linked-roles-for-aws-devops-agent"></a>

AWS DevOps [L'agent utilise des AWS rôles liés au service Identity and Access Management (IAM).](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) Un rôle lié à un service est un type unique de rôle IAM directement lié à l'agent. AWS DevOps Les rôles liés au service sont prédéfinis par AWS DevOps l'agent et incluent toutes les autorisations dont le service a besoin pour appeler d'autres AWS services en votre nom.

### Autorisations de rôles liés à un service
<a name="service-linked-role-permissions"></a>

Le rôle lié à un service `AWSServiceRoleForAIDevOps` fait confiance au mandataire de service `aidevops.amazonaws.com` qui assume le rôle.

Le rôle utilise la politique gérée `AWSServiceRoleForAIDevOpsPolicy` avec les autorisations suivantes :
+ `cloudwatch:PutMetricData`— Publiez les métriques d'utilisation dans l'espace de `AWS/AIDevOps` CloudWatch noms. Délimité par une `cloudwatch:namespace` condition autorisant uniquement l'espace de `AWS/AIDevOps` noms.
+ `vpc-lattice:CreateResourceGateway`— Créez des passerelles de ressources VPC Lattice pour les connexions privées. Délimité par une `aws:RequestTag/AWSAIDevOpsManaged` condition afin que le service ne puisse créer que des passerelles de ressources portant le `AWSAIDevOpsManaged` tag.
+ `vpc-lattice:TagResource`— Marquez les passerelles de ressources VPC Lattice. Délimité par une `aws:RequestTag/AWSAIDevOpsManaged` condition.
+ `vpc-lattice:DeleteResourceGateway`— Supprimez les passerelles de ressources VPC Lattice. Délimité par une `aws:ResourceTag/AWSAIDevOpsManaged` condition afin que le service ne puisse supprimer que les passerelles de ressources qu'il a créées.
+ `vpc-lattice:GetResourceGateway`— Récupère des informations sur les passerelles de ressources VPC Lattice. Délimité par une `aws:ResourceTag/AWSAIDevOpsManaged` condition afin que le service ne puisse lire que les passerelles de ressources qu'il a créées.
+ `ec2:DescribeVpcs`,`ec2:DescribeSubnets`, `ec2:DescribeSecurityGroups` — Récupérez des informations sur les ressources réseau VPC requises pour configurer les passerelles de ressources. Ces actions en lecture seule s'appliquent à toutes les ressources VPC car l'API EC2 ne prend pas en charge les autorisations au niveau des ressources pour les appels Describe.
+ `iam:CreateServiceLinkedRole`— Créez le rôle lié au service VPC Lattice requis pour les opérations de passerelle de ressources. Cette autorisation est limitée au principal du `vpc-lattice.amazonaws.com` service et ne peut pas être utilisée pour créer des rôles liés au service pour un autre service.

### Création du rôle lié à un service
<a name="creating-the-service-linked-role"></a>

Vous n'avez pas besoin de créer manuellement un rôle lié au service `AWSServiceRoleForAIDevOps`. Lorsque vous commencez à utiliser l' AWS DevOps Agent, le service crée le rôle lié au service pour vous.

Pour autoriser le service à créer le rôle en votre nom, vous devez en avoir l'`iam:CreateServiceLinkedRole`autorisation. Nous recommandons de définir la portée de cette autorisation `aidevops.amazonaws.com` à la `iam:AWSServiceName` condition de respecter le principe du moindre privilège. Pour plus d’informations, consultez [Autorisations des rôles liés à un service](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions).

### Modifier le rôle lié à un service
<a name="editing-the-service-linked-role"></a>

Vous ne pouvez pas modifier le rôle lié à un service `AWSServiceRoleForAIDevOps`. Une fois le rôle créé, vous ne pouvez pas le modifier car différentes entités peuvent le référencer par son nom. Néanmoins, vous pouvez modifier la description du rôle à l’aide d’IAM. Pour plus d'informations, consultez la section [Modification d'un rôle lié à un service](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role).

### Suppression du rôle lié à un service
<a name="deleting-the-service-linked-role"></a>

Si vous n'avez plus besoin d'utiliser l' AWS DevOps Agent, nous vous recommandons de supprimer le rôle `AWSServiceRoleForAIDevOps` lié au service. Avant de pouvoir supprimer le rôle, vous devez d'abord supprimer toutes les connexions privées configurées dans votre espace agent. La suppression du rôle lié au service ne supprime pas automatiquement les passerelles de ressources VPC Lattice `AWSAIDevOpsManaged` qui ont été précédemment créées par le service. Vous devez supprimer ces passerelles de ressources manuellement si elles ne sont plus nécessaires. Pour plus d'informations, consultez [Supprimer un rôle lié à un service](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role).

## AWS Politiques gérées pour AWS DevOps l'agent
<a name="aws-managed-policies-for-aws-devops-agent"></a>

AWS répond à de nombreux cas d'utilisation courants en fournissant des politiques IAM autonomes créées et administrées par. AWS Ces politiques AWS gérées accordent les autorisations nécessaires pour les cas d'utilisation courants afin que vous puissiez éviter d'avoir à rechercher les autorisations nécessaires. Pour plus d'informations, consultez les [politiques AWS gérées](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) dans le \$1Guide de l'utilisateur IAM\$1.

Les politiques AWS gérées suivantes, que vous pouvez associer aux utilisateurs de votre compte, sont spécifiques à AWS DevOps Agent.

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

Fournit un accès en lecture seule à Amazon DevOps Agent via la console AWS de gestion

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

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

Fournit un accès complet à Amazon DevOps Agent via la console AWS de gestion

```
{
	"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>

Permet d'utiliser l'application Web de l' AWS DevOps opérateur pour un agent Space.

```
{
	"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>

Fournit les autorisations requises par l' AWS DevOps agent pour mener des enquêtes et effectuer des analyses sur les AWS ressources des clients.

```
{
    "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/*"
            ]
        }
    ]
}
```

# Limiter l'accès des agents à un AWS compte
<a name="aws-devops-agent-security-limiting-agent-access-in-an-aws-account"></a>

AWS DevOps L'agent utilise les rôles IAM pour découvrir et décrire les AWS ressources lors des enquêtes sur les incidents et des évaluations préventives. Vous pouvez contrôler le niveau d'accès de l'agent en configurant les politiques IAM associées à ces rôles. La topologie de l'application ne montre pas tout ce à quoi l'agent a accès. Les politiques IAM sont le seul moyen de réellement limiter les AWS services APIs et les ressources auxquels l'agent peut accéder.

## Comprendre les rôles IAM pour l'agent AWS DevOps
<a name="understanding-iam-roles-for-aws-devops-agent"></a>

AWS DevOps L'agent utilise les rôles IAM pour accéder aux ressources de deux types de comptes :
+ **Rôle du compte principal** — Permet à l'agent d'accéder aux ressources du AWS compte sur lequel vous créez l'espace agent.
+ **Rôles de compte secondaires** — Permet à l'agent d'accéder aux ressources des AWS comptes supplémentaires que vous connectez à l'espace agent.

Quel que soit le type de compte, vous pouvez restreindre les AWS services auxquels l'agent peut accéder, limiter l'accès à des ressources spécifiques au sein de ces services et contrôler les régions dans lesquelles l'agent peut opérer.

## Choix des limites de vos ressources
<a name="choosing-your-resource-boundaries"></a>

Lorsque vous limitez l'accès aux ressources, vous devez inclure suffisamment d'autorisations pour que l'agent puisse enquêter avec succès sur les incidents liés aux applications. Cela inclut notamment les éléments suivants :
+ Toutes les ressources pour les applications concernées que l'agent doit surveiller et étudier
+ Toute l'infrastructure de support dont dépendent ces applications

L'infrastructure de soutien peut inclure :
+ Composants réseau (sous-réseauxVPCs, équilibreurs de charge, passerelles d'API)
+ Magasins de données (bases de données, caches, stockage d'objets)
+ Ressources de calcul (instances EC2, fonctions Lambda, conteneurs)
+ Services de surveillance et de journalisation (CloudWatch, CloudTrail)
+ Ressources de gestion des identités et des accès nécessaires pour comprendre les autorisations

Si vous limitez trop étroitement l'accès, l'agent risque de ne pas être en mesure d'identifier les causes profondes liées au soutien de l'infrastructure en dehors des limites que vous avez définies.

## Restreindre l'accès aux services
<a name="restricting-service-access"></a>

Vous pouvez limiter les AWS services auxquels l'agent peut accéder en modifiant les politiques IAM associées aux rôles de l'agent. Lorsque vous créez des politiques personnalisées, suivez les meilleures pratiques suivantes :
+ **Accordez uniquement des autorisations en lecture seule** : l'agent doit lire les configurations des ressources, les métriques et les journaux pendant les enquêtes. Évitez d'accorder des autorisations permettant à l'agent de modifier ou de supprimer des ressources.
+ **Limiter les services nécessaires** — N'incluez que les AWS services contenant des ressources pertinentes pour vos applications. Par exemple, si votre application n'utilise pas Amazon RDS, n'incluez pas les autorisations RDS dans la politique.
+ **Utilisez des actions spécifiques plutôt que des caractères génériques** : au lieu d'accorder des `service:*` autorisations, spécifiez des actions individuelles telles que `cloudwatch:GetMetricData` ou`ec2:DescribeInstances`.

Exemple de politique limitée à des services spécifiques :

```
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": "*"
    }
  ]
}
```

## Restreindre l'accès aux ressources
<a name="restricting-resource-access"></a>

Pour limiter l'agent à des ressources spécifiques au sein d'un service, utilisez les autorisations au niveau des ressources dans vos politiques IAM. Cela vous permet de n'accorder l'accès qu'aux ressources qui correspondent à des modèles spécifiques.

**À l'aide de modèles d'ARN de ressources :**

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

Cet exemple limite l'agent à accéder uniquement aux fonctions Lambda dont le nom commence par « production- ».

**Utilisation de restrictions basées sur des balises :**

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

Cet exemple limite l'agent à accéder uniquement aux instances EC2 étiquetées avec`Environment=production`.

## Restreindre l'accès régional
<a name="restricting-regional-access"></a>

Pour limiter AWS les régions auxquelles l'agent peut accéder, utilisez la clé de `aws:RequestedRegion` condition dans vos politiques 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"
          ]
        }
      }
    }
  ]
}
```

Cet exemple limite l'agent à accéder aux ressources uniquement dans les régions us-east-1 et us-west-2.

## Création de politiques IAM personnalisées
<a name="creating-custom-iam-policies"></a>

Lorsque vous créez un espace agent ou que vous ajoutez des comptes secondaires, vous avez la possibilité de créer un rôle IAM personnalisé à l'aide d'un modèle de politique. Cela vous permet de mettre en œuvre le principe du moindre privilège.

**Lors de la création d'un espace d'agent**

Depuis la console de DevOps l'agent dans la console AWS de gestion...
+ Choisissez **Créer un nouveau rôle d' DevOps agent à l'aide d'un document de politique** et suivez les instructions

**Lors de la modification d'un espace d'agent**

Depuis la console de DevOps l'agent dans la console AWS de gestion...
+ Sélectionnez l'onglet **Fonctionnalités**
+ Sélectionnez le compte secondaire que vous souhaitez modifier dans la section **Cloud** et cliquez sur Modifier
+ Choisissez **Créer une nouvelle politique d' DevOps agent à l'aide d'un modèle** et suivez les instructions

## Bonnes pratiques en matière de politiques personnalisées
<a name="custom-policy-best-practices"></a>
+ **Accorder uniquement des autorisations en lecture seule** : évitez les autorisations qui autorisent la modification ou la suppression de ressources
+ **Utilisez des autorisations au niveau des ressources lorsque cela est possible** : limitez l'accès à des ressources spécifiques à l'aide de modèles ou de balises ARN
+ Vérifiez **et auditez régulièrement les autorisations** : passez régulièrement en revue les politiques IAM de l'agent pour vous assurer qu'elles sont toujours conformes à vos exigences de sécurité

# Configuration de l'authentification IAM Identity Center
<a name="aws-devops-agent-security-setting-up-iam-identity-center-authentication"></a>

L'authentification IAM Identity Center fournit un moyen centralisé de gérer l'accès des utilisateurs à l'application Web AWS DevOps Agent Space. Ce guide explique comment configurer l'authentification IAM Identity Center et comment gérer les utilisateurs.

## Conditions préalables
<a name="prerequisites"></a>

Avant de configurer l'authentification IAM Identity Center, assurez-vous d'avoir :
+ IAM Identity Center activé dans votre organisation ou votre compte
+ Autorisations d'administrateur dans AWS DevOps l'agent
+ Un espace agent configuré ou prêt à être créé

## Options d'authentification
<a name="authentication-options"></a>

AWS DevOps L'agent propose deux méthodes d'authentification pour accéder à l'application Web Agent Space :

**Authentification IAM Identity Center** : recommandée pour les environnements de production. Assure une gestion centralisée des utilisateurs, une intégration avec des fournisseurs d'identité externes et des sessions d'une durée maximale de 12 heures.

**Accès administrateur (authentification IAM)** : fournit un accès rapide aux administrateurs lors de l'installation et de la configuration initiales. Les séances sont limitées à 30 minutes.

## Configuration d'IAM Identity Center lors de la création de l'espace agent
<a name="configuring-iam-identity-center-during-agent-space-creation"></a>

Lorsque vous créez un espace agent, vous pouvez configurer l'authentification IAM Identity Center dans l'onglet **Accès** :

### Étape 1 : Accédez à la configuration de l'application Web
<a name="step-1-navigate-to-the-web-app-configuration"></a>

1. Après avoir configuré les détails de votre espace agent et l'accès à votre AWS compte, passez à l'onglet **Accès**

1. Vous verrez deux sections : « Connect IAM Identity Center » et « Accès administrateur »

### Étape 2 : configurer l'intégration d'IAM Identity Center
<a name="step-2-configure-iam-identity-center-integration"></a>

Dans la section **Connect [Agent Space] à IAM Identity Center** :

1. **Vérifiez l'instance IAM Identity Center** : la console indique quelle instance Identity Center gérera l'accès des utilisateurs de l'application Web (par exemple,`ssoins-7223a9580931edbe`). L'instance IAM Identity Center la plus proche sera automatiquement préremplie.

1. **Sélectionnez l'option Nom du rôle de l'application IAM Identity Center** : choisissez l'une des trois options suivantes :

**Création automatique d'un nouveau rôle DevOps d'agent** (recommandé) :
+ Le système crée automatiquement un nouveau rôle de service avec les autorisations appropriées
+ Il s'agit de l'option la plus simple et elle fonctionne pour la plupart des cas d'utilisation

**Attribuez un rôle existant** :
+ Utiliser un rôle IAM existant que vous avez déjà créé
+ Le système vérifiera que le rôle dispose des autorisations requises
+ Choisissez cette option si votre organisation a précréé des rôles pour l'agent AWS DevOps 

**Créez un nouveau rôle d' DevOps agent à l'aide d'un modèle de politique** :
+ Utilisez les détails de politique fournis pour créer votre propre rôle personnalisé dans la console IAM
+ Choisissez cette option si vous devez personnaliser les autorisations des rôles

Après avoir cliqué sur Connect, le système :
+ Crée ou configure le rôle IAM spécifié
+ Configure une application IAM Identity Center pour votre espace d'agent
+ Établit des relations de confiance entre IAM Identity Center et l'application Web Agent Space
+ Configure les flux d'authentification OAuth 2.0 pour un accès utilisateur sécurisé

### Alternative : utilisation de l'accès administrateur
<a name="alternative-using-admin-access"></a>

Si vous souhaitez accéder immédiatement à l'application Web Agent Space sans configurer IAM Identity Center :

1. Dans la section **Accès administrateur**, notez l'ARN du rôle IAM qui fournit un accès administrateur (par exemple,`arn:aws:iam::440491339484:role/service-role/DevOpsAgentRole-WebappAdmin-15ppoc42`)

1. Cliquez sur le bouton bleu **d'accès administrateur** pour lancer l'application Web Agent Space avec l'authentification IAM

1. Les sessions utilisant cette méthode sont limitées à 30 minutes

**Note**  
**L'accès administrateur est destiné à l'installation et à la configuration initiales. Pour une utilisation en production et pour les opérations en cours, configurez l'authentification IAM Identity Center.

## Ajout d’utilisateurs et de groupes
<a name="adding-users-and-groups"></a>

Après avoir configuré l'authentification IAM Identity Center, vous devez autoriser des utilisateurs et des groupes spécifiques à accéder à l'application Web Agent Space :

### Étape 1 : Accès à la gestion des utilisateurs
<a name="step-1-access-user-management"></a>

1. Dans la console AWS DevOps Agent, sélectionnez votre espace agent

1. Accédez à l'onglet **Accès**

1. Sous **Accès utilisateur**, cliquez sur **Gérer les utilisateurs et les groupes**

### Étape 2 : ajouter des utilisateurs ou des groupes
<a name="step-2-add-users-or-groups"></a>

1. Choisissez **Ajouter des utilisateurs ou des groupes**

1. Recherchez des utilisateurs ou des groupes dans votre annuaire IAM Identity Center

1. Cochez les cases à côté des utilisateurs ou des groupes que vous souhaitez ajouter

1. Cliquez sur **Ajouter** pour leur accorder l'accès

Les utilisateurs sélectionnés peuvent désormais accéder à l'application Web Agent Space à l'aide de leurs informations d'identification IAM Identity Center.

### Travailler avec des fournisseurs d'identité externes
<a name="working-with-external-identity-providers"></a>

Si vous utilisez un fournisseur d'identité externe (tel qu'Okta, Microsoft Entra ID ou Ping Identity) avec IAM Identity Center :
+ Les utilisateurs et les groupes sont synchronisés entre votre fournisseur d'identité externe et IAM Identity Center
+ Lorsque vous ajoutez des utilisateurs et des groupes à l'application Web Agent Space, vous effectuez une sélection dans le répertoire synchronisé
+ Les attributs des utilisateurs et les appartenances aux groupes sont gérés par votre fournisseur d'identité externe
+ Les modifications apportées à votre fournisseur d'identité sont automatiquement reflétées dans IAM Identity Center après la synchronisation

## Comment les utilisateurs accèdent à l'application Web Agent Space
<a name="how-users-access-the-agent-space-web-app"></a>

Après avoir ajouté des utilisateurs à votre espace agent :

1. Partagez l'URL de l'application Web Agent Space avec les utilisateurs autorisés

1. Lorsque les utilisateurs accèdent à l'URL, ils sont redirigés vers la page de connexion d'IAM Identity Center

1. Après avoir saisi leurs informations d'identification (et terminé le MFA si configuré), ils sont redirigés vers l'application Web Agent Space

1. Leur session est valide pendant 8 heures par défaut (configurable par l'administrateur d'Identity Center)

## Gestion de l’accès des utilisateurs
<a name="managing-user-access"></a>

Vous pouvez mettre à jour l'accès des utilisateurs à tout moment :

**Ajouter des utilisateurs ou des groupes supplémentaires :**
+ Suivez les mêmes étapes décrites ci-dessus pour ajouter des utilisateurs ou des groupes supplémentaires

**Suppression de l'accès :**

1. Dans la section **Accès utilisateur**, recherchez l'utilisateur ou le groupe à supprimer

1. Cliquez sur le bouton **Supprimer** à côté de son nom

1. Confirmez la suppression

Les utilisateurs supprimés perdront immédiatement leur accès, mais les sessions actives peuvent se poursuivre jusqu'à leur expiration.

## Gestion de session
<a name="session-management"></a>

Les sessions IAM Identity Center pour l'application Web Agent Space présentent les caractéristiques suivantes :
+ **Durée de session par défaut** : 8 heures
+ **Sécurité de session** : cookies HTTP uniquement pour une protection renforcée
+ **Authentification multifactorielle** : prise en charge lorsqu'elle est configurée dans IAM Identity Center
+ **Informations d'identification API** — Des informations d'identification SigV4 de courte durée (15 minutes) sont émises pour les appels d'API et renouvelées automatiquement

Pour configurer la durée de session, procédez comme suit :

1. Accédez à la console IAM Identity Center

1. Accédez à **Réglages** > **Authentification**

1. Sous **Durée de session**, configurez votre durée préférée (de 1 heure à 12 heures)

1. Choisissez **Enregistrer les modifications**

## Déconnexion du centre d'identité
<a name="disconnecting-identity-center"></a>

1. Dans la console de votre Agent Space, cliquez sur **Actions** en haut à droite et sélectionnez **Déconnecter du centre d'identité IAM**

1. Confirmer dans la boîte de dialogue de confirmation

# Configuration de l'authentification par fournisseur d'identité externe (IdP)
<a name="aws-devops-agent-security-setting-up-external-identity-provider-idp-authentication"></a>

L'authentification par fournisseur d'identité externe (IdP) permet à votre organisation d'utiliser un fournisseur d'identité compatible OIDC existant, tel qu'Okta ou Microsoft Entra ID, pour gérer l'accès des utilisateurs à l' AWS DevOps application Web Agent Space. Les utilisateurs se connectent à l'aide de leurs identifiants d'entreprise directement via votre IdP, sans avoir besoin d' AWS IAM Identity Center.

## Conditions préalables
<a name="prerequisites"></a>

Avant de configurer l'authentification IdP externe, assurez-vous d'avoir :
+ Un fournisseur d'identité compatible OIDC (Okta ou Microsoft Entra ID)
+ Accès administrateur à votre fournisseur d'identité
+ Autorisations d'administrateur pour accéder à la console de AWS DevOps l'agent
+ Un espace agent configuré ou prêt à être créé

## Comment ça marche
<a name="how-it-works"></a>

Lorsque vous configurez l'authentification IdP externe :
+ Les utilisateurs accèdent à l'URL de l'application Web Agent Space
+ Ils sont redirigés vers la page de connexion de votre fournisseur d'identité
+ Après s'être authentifiés à l'aide de leurs informations d'identification professionnelles, ils sont redirigés vers l'application Web
+ L'application Web échange le jeton d'authentification contre des AWS informations d'identification de courte durée accessibles à l'espace agent

Les sessions sont valides pour une durée maximale de 8 heures. Les informations d'identification sont automatiquement actualisées à l'aide de jetons d'actualisation OIDC sans que les utilisateurs n'aient à s'authentifier à nouveau.

## Configuration de l'authentification IdP externe
<a name="configuring-external-idp-authentication"></a>

### Étape 1 : Enregistrez une demande auprès de votre fournisseur d'identité
<a name="step-1-register-an-application-in-your-identity-provider"></a>

Choisissez votre fournisseur d'identité et suivez les instructions de configuration correspondantes.

#### Option A : Okta
<a name="option-a-okta"></a>

1. Dans la console d'administration Okta, accédez à **Applications > **Applications**** et choisissez **Create App Integration**

1. Sélectionnez **OIDC - OpenID** Connect comme **méthode de connexion et** Application Web comme type d'application. Choisissez **Next** (Suivant)

1. Définissez un nom descriptif pour l'application (par exemple,`AWS DevOps Agent`)

1. Sous **Type de subvention**, assurez-vous que les éléments suivants sont cochés :
   + **Code d'autorisation** (par défaut)
   + **Jeton d'actualisation** — Ceci est nécessaire pour actualiser la session. Si cette option n'est pas activée, les utilisateurs ne seront pas en mesure de maintenir les sessions.

**Note**  
**Okta n'active pas le type de subvention Refresh Token par défaut. Vous devez l'activer explicitement.

1. Laissez la **redirection de connexion URIs** comme valeur par défaut pour le moment. Vous la mettrez à jour après avoir configuré l'espace agent

1. Sous **Attributions**, attribuez les utilisateurs ou les groupes qui devraient avoir accès

1. Choisissez **Enregistrer**.

1. Dans l'onglet **Général** de l'application, notez les valeurs suivantes :
   + **Identifiant du client**
   + **Secret client** — Choisissez **Copier** pour enregistrer cette valeur en toute sécurité

1. Notez votre **domaine Okta :** il s'agit de l'URL de votre émetteur (par exemple,`https://dev-12345678.okta.com`).

**Note**  
Dans **l'onglet** **Connexion, vérifiez que l'**émetteur **est défini** sur Okta URL ** (et non sur Dynamic). Cela garantit la stabilité de l'URL de l'émetteur.

**Note**  
**N'ajoutez pas de ** réclamation de** groupe au jeton d'identification dans l'onglet Réclamations de votre serveur d'autorisation. AWS DevOps L'agent n'utilise pas l'appartenance à un groupe depuis votre IdP.

#### Option B : identifiant Microsoft Entra
<a name="option-b-microsoft-entra-id"></a>

1. Sur le portail Azure, accédez à **Microsoft Entra ID** > **Enregistrements d'applications** > **Nouvel enregistrement**

1. Définissez un nom descriptif (par exemple,`AWS DevOps Agent`)

1. Sous **Types de comptes pris en charge**, sélectionnez l'option appropriée pour votre organisation (généralement, **les comptes de ce répertoire d'organisation uniquement**)

1. Laissez l'**URI de redirection** vide pour le moment. Choisissez **S'inscrire**

1. Sur la page de **présentation** de l'application, notez les valeurs suivantes :
   + **ID de l'application (client)** : utilisé comme identifiant client lors de la configuration de l'espace agent
   + **ID du répertoire (tenant)** : utilisé pour créer l'URL de l'émetteur

1. Accédez à **Certificats et secrets** > **Nouveau secret client**
   + Définissez une description et une période d'expiration
   + Choisissez **Ajouter** et copiez immédiatement la **valeur** secrète ; elle ne sera plus affichée

1. L'URL de l'émetteur de l'identifiant Entra suit ce format. `{tenant-id}`Remplacez-le par votre ID de répertoire (tenant) indiqué à l'étape 5 :
   + `https://login.microsoftonline.com/{tenant-id}/v2.0`

**Note**  
**N'activez pas la réclamation facultative du** **groupe dans la** configuration des jetons**. AWS DevOps L'agent n'utilise pas l'appartenance à un groupe depuis votre IdP.

### Étape 2 : activer l'application Operator avec l'authentification IdP
<a name="step-2-enable-the-operator-app-with-idp-authentication"></a>

1. Dans la console AWS DevOps Agent, sélectionnez votre espace agent

1. Accédez à l'onglet **Accès**

1. Sous **Accès utilisateur**, choisissez **Fournisseur d'identité externe**

1. Dans le formulaire de configuration, configurez les éléments suivants :
   + **Fournisseur d'identité** : sélectionnez votre fournisseur d'identité (Okta ou Microsoft Entra ID)
   + URL de **l'émetteur : URL** de l'émetteur OIDC de votre fournisseur d'identité
   + **ID client : ID** client de l'application OIDC que vous avez créée
   + **Secret client** — Le secret client de votre application OIDC

1. Sous **Nom du rôle de l'application du fournisseur d'identité**, choisissez l'une des trois options suivantes :
   + **Création automatique d'un nouveau rôle d' DevOps agent** (recommandé) : crée un nouveau rôle de service avec les autorisations appropriées
   + **Attribuer un rôle existant** : utilisez un rôle IAM existant que vous avez déjà créé
   + **Création d'un nouveau rôle d' DevOps agent à l'aide d'un modèle de politique** : utilisez les informations fournies pour créer votre propre rôle dans la console IAM

1. Consultez l'alerte d'avertissement **relative à l'URL de rappel** affichée au bas du formulaire. Copiez cette URL : vous devrez l'ajouter à la redirection autorisée par votre fournisseur d'identité URIs avant que les utilisateurs puissent se connecter.

1. Choisissez **Connect (Connexion)**.

Après avoir choisi **Connect**, la console affiche la **configuration du fournisseur d'identité externe** avec les détails suivants :
+ **Fournisseur** : le fournisseur d'identité que vous avez sélectionné
+ URL de **l'émetteur : URL** de l'émetteur OIDC configurée
+ **ID client** : ID client configuré
+ **ARN du rôle IAM** — Le rôle IAM utilisé pour l'accès des utilisateurs
+ **URL de rappel** — Configurez cette URL dans votre fournisseur d'identité en tant qu'URI de redirection autorisée
+ **URL de connexion** : utilisez cette URL pour accéder à l'application Web via votre fournisseur d'identité

### Étape 3 : Ajoutez l'URL de rappel à votre fournisseur d'identité
<a name="step-3-add-the-callback-url-to-your-identity-provider"></a>

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

1. Dans la console d'administration Okta, accédez à l'onglet **Général** de votre application

1. Sous **Connexion**, choisissez **Modifier**

1. Ajoutez l'URL de rappel en tant qu'URI de **redirection de connexion** :
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/callback`

1. (Facultatif) Définissez l'**URI d'initiation de connexion** pour activer la connexion initiée par l'IdP depuis le tableau de bord Okta :
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/login`

1. (Recommandé) Ajoutez une **URI de redirection de déconnexion** pour rediriger les utilisateurs vers l'application Web après la déconnexion. Sans cela, les utilisateurs peuvent voir une page d'erreur s'afficher lorsqu'ils se déconnectent :
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome`

1. Choisissez **Enregistrer**.

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

1. Dans le portail Azure, accédez à la page d'**authentification** de votre application

1. Sous **Configurations de plate-forme**, choisissez **Ajouter une plate-forme** > **Web**

1. Entrez l'URL de rappel en tant qu'**URI de redirection** :
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/callback`

1. (Facultatif) Ajoutez une URI de redirection de déconnexion pour rediriger les utilisateurs vers l'application Web après la déconnexion :
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome`

1. Choisissez **Configurer**

### Étape 4 : vérifier la configuration
<a name="step-4-verify-the-configuration"></a>

1. Accédez à l'**URL de connexion** affichée dans la console :
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/login`

1. Vous devriez être redirigé vers la page de connexion de votre fournisseur d'identité

1. Connectez-vous à l'aide des informations d'identification de votre entreprise

1. Une fois l'authentification réussie, vous êtes redirigé vers l'application Web Agent Space

## Mise à jour de la configuration de l'IdP
<a name="updating-idp-configuration"></a>

Vous pouvez faire pivoter le secret du client sans vous déconnecter :

1. Dans la console AWS DevOps Agent, sélectionnez votre espace agent

1. Accédez à l'onglet **Accès**

1. Sous **Configuration du fournisseur d'identité externe**, choisissez **Rotate client secret**

1. Entrez le nouveau **secret du client**

1. Choisissez **Enregistrer**.

Pour modifier un autre champ de configuration d'IdP (tel que l'URL de l'émetteur, l'ID client ou le fournisseur d'identité), vous devez déconnecter l'IdP existant et en configurer un nouveau.

## Comment les utilisateurs accèdent à l'application Web Agent Space
<a name="how-users-access-the-agent-space-web-app"></a>

Après avoir configuré l'authentification IdP externe :
+ Partagez l'URL de l'application Web Agent Space avec les utilisateurs autorisés
+ Lorsque les utilisateurs accèdent à l'URL, ils sont redirigés vers la page de connexion de votre fournisseur d'identité
+ Après avoir saisi leurs informations d'identification (et terminé le MFA si configuré par votre IdP), ils sont redirigés vers l'application Web Agent Space
+ Les sessions sont actualisées automatiquement — voir [Gestion des sessions](#session-management) pour plus de détails

## Gestion de session
<a name="session-management"></a>

Les sessions IdP externes pour l'application Web Agent Space présentent les caractéristiques suivantes :
+ **Durée de session** — Les sessions du navigateur durent jusqu'à 8 heures. Ceci n'est pas configurable dans AWS DevOps l'Agent. Si la durée de vie de la session de votre IdP dépasse 8 heures, les utilisateurs peuvent être réauthentifiés automatiquement lors de leur prochaine visite sans saisir d'informations d'identification. Configurez la durée de vie des sessions et des jetons de votre IdP conformément aux exigences de sécurité de votre organisation.
+ **Actualisation des informations d'identification** : les sessions sont automatiquement actualisées à l'aide de jetons d'actualisation OIDC sans que les utilisateurs n'aient à s'authentifier à nouveau
+ **Authentification multifactorielle** : prise en charge lorsqu'elle est configurée dans votre fournisseur d'identité. L'IdP gère le MFA lors de la connexion ; aucune configuration supplémentaire n'est nécessaire dans l'Agent AWS DevOps 

### Comportement de déconnexion
<a name="logout-behavior"></a>

Lorsqu'un utilisateur clique sur **Déconnexion** dans l'application Web :

1. Tous les cookies de session sont immédiatement effacés

1. L'utilisateur est redirigé vers le point de terminaison de déconnexion OIDC du fournisseur d'identité pour mettre fin à la session SSO

1. Si une URI de redirection de déconnexion est configurée, l'utilisateur est redirigé vers la page d'accueil de l'application Web

### Révocation de l'accès utilisateur
<a name="revoking-user-access"></a>

Pour révoquer immédiatement l'accès d'un utilisateur, vous pouvez révoquer ses sessions directement sur le portail d'administration de votre fournisseur d'identité :
+ **Okta** — Dans la console d'administration Okta, accédez à **Annuaire** > **Personnes**, sélectionnez l'utilisateur, choisissez **Plus d'actions** > **Effacer** les sessions utilisateur
+ **Microsoft Entra ID** : dans le portail Azure, accédez à **Utilisateurs**, sélectionnez l'utilisateur, puis choisissez **Révoquer** les sessions

## Considérations sur la sécurité
<a name="security-considerations"></a>

**Stockage du secret client** : le secret client que vous fournissez lors de la configuration est chiffré à l'aide de votre clé KMS gérée par le client si vous en avez fourni une lors de la création de l'espace agent, ou d'une clé appartenant au service dans le cas contraire. Il n'est jamais renvoyé dans les réponses de l'API ni affiché dans la console après la configuration initiale.

**Rotation des secrets clients** — Les secrets clients Entra ont une date d'expiration configurable. Définissez un rappel pour faire pivoter le secret avant son expiration à l'aide de l'option **Rotation du secret client** dans la console de l' AWS DevOps agent. Si le secret expire, les utilisateurs ne pourront pas se connecter tant qu'il n'aura pas été modifié.

**Gestion de la durée** de vie des jetons — La durée de vie des jetons (jetons d'accès, jetons d'actualisation) émis par votre fournisseur d'identité est contrôlée par la configuration de votre IdP. Nous vous recommandons de configurer les durées de vie des jetons appropriées dans votre IdP :
+ **Okta** **— Configurez la durée de vie des jetons sous **Sécurité** > **API** > **Serveurs d'autorisation > Politiques d'**accès**
+ **Microsoft Entra ID** : configurez la durée de vie des jetons à l'aide des politiques de durée de [vie des jetons](https://learn.microsoft.com/en-us/entra/identity-platform/configurable-token-lifetimes)

**Réclamation de groupe** : n'activez pas la réclamation de groupe dans la configuration des jetons de votre fournisseur d'identité. AWS DevOps L'agent n'utilise actuellement pas l'appartenance à un groupe depuis votre IdP.

**Identifiant utilisateur** — AWS DevOps L'agent utilise une réclamation spécifique au fournisseur pour identifier les utilisateurs de manière unique :
+ **Okta** — Utilise la `sub` réclamation du jeton d'identification
+ **Microsoft Entra ID** — Utilise la réclamation `oid` (identifiant de l'objet) contenue dans le jeton d'identification

Ces identifiants sont immuables et apparaissent dans les CloudTrail journaux à des fins d'audit.

## Déconnexion d'un IdP externe
<a name="disconnecting-external-idp"></a>

1. Dans la console AWS DevOps Agent, sélectionnez votre espace agent

1. Accédez à l'onglet **Accès**

1. Sous **Accès utilisateur**, choisissez **Déconnecter**

1. Passez en revue les impacts répertoriés dans la boîte de dialogue de confirmation et confirmez

La déconnexion permettra de :
+ Supprimer la configuration IdP de l'espace agent
+ Empêcher les utilisateurs de se connecter via le fournisseur d'identité externe
+ Supprimer l'historique des discussions individuelles et des artefacts associés aux comptes utilisateurs IdP

Les sessions utilisateur actives se poursuivront jusqu'à leur expiration ou jusqu'à ce que la prochaine actualisation des informations d'identification échoue.

## Résolution des problèmes
<a name="troubleshooting"></a>
+ La **redirection vers l'IdP échoue** : vérifiez que l'URL de l'émetteur correspond au point de terminaison de découverte OIDC de votre IdP. Pour Okta, assurez-vous que l'**émetteur** est défini sur l'**URL Okta** (et non sur **Dynamic**) dans l'onglet **Sign** On. Pour Entra, utilisez le format`https://login.microsoftonline.com/{tenant-id}/v2.0`.
+ **Accès refusé ou erreur de politique (Okta)** : vérifiez que l'utilisateur ou son groupe est affecté à l'application sous **Affectations**. Cochez **la case Connexion** **> Règles relatives à la politique de** connexion.
+ **Erreur de configuration de l'IdP après la connexion** : votre fournisseur d'identité n'a pas renvoyé de jeton d'actualisation. Assurez-vous que le `offline_access` champ d'application et le type d'autorisation du jeton d'actualisation sont activés :
  + **Okta** **— Accédez à l'onglet **Général** de votre application et cochez la case **Actualiser le jeton** sous Type de subvention**
  + **Entra** — Accédez aux **autorisations de l'API** et assurez-vous qu'elles `offline_access` figurent dans la section Autorisations déléguées
+ **L'authentification réussit mais l'application Web affiche une erreur**. Vérifiez que l'URI de redirection de votre IdP correspond exactement à l'URL de **rappel affichée dans AWS DevOps la** console de l'agent.
+ **Échecs d'authentification** — Si la réclamation facultative du **groupe** est activée dans votre IdP, désactivez-la. AWS DevOps L'agent n'utilise pas les réclamations de groupe.
+ **La **connexion échoue après l'authentification IdP** — Pour Entra, la vérification n'`requestedAccessTokenVersion`est pas définie sur `null` dans le manifeste de l'application.** Pour Okta, vérifiez que l'**URL de l'émetteur est correcte**.
+ **Page d'erreur après avoir cliqué sur Déconnexion (Okta)** **: si un `post_logout_redirect_uri` message d'erreur s'affiche après la déconnexion, ajoutez `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome` une **URI de redirection de déconnexion** dans l'onglet Général de votre application Okta.**
+ **Les utilisateurs restent sur la page du fournisseur d'identité après la déconnexion (Entra)** — Pour rediriger les utilisateurs vers l'application Web après la déconnexion, ajoutez `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome` un **URI de redirection** sur la page **d'authentification** de votre application Entra.

# Chiffrement au repos pour AWS DevOps l'agent
<a name="aws-devops-agent-security-encryption-at-rest-for-devops-agent"></a>

AWS DevOps L'agent chiffre toutes les données clients au repos. Par défaut, AWS DevOps l'Agent AWS utilise ses propres clés pour chiffrer automatiquement vos données sans frais supplémentaires. Vous ne pouvez pas consulter, gérer ou auditer l'utilisation des clés AWS détenues. Cependant, vous n'avez aucune action à effectuer pour protéger ces clés. Vos données sont automatiquement sécurisées.

Vous pouvez choisir de chiffrer vos données à l'aide d'une clé symétrique gérée par le client que vous créez, détenez et gérez dans AWS Key Management Service (AWS KMS). Comme vous avez le contrôle total de cette couche de chiffrement, vous pouvez effectuer des tâches telles que les suivantes :
+ Établissement et gestion des stratégies de clé
+ Activation et désactivation des stratégies de clé
+ Rotation des matériaux de chiffrement de clé
+ Ajout de balises 
+ Création d’alias de clé
+ Planification des clés pour la suppression

Pour plus d'informations, consultez la section [Clés gérées par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) dans le *Guide du développeur du service de gestion des AWS clés*.

**Note**  
** AWS DevOps L'agent active automatiquement le chiffrement au repos à l'aide de clés AWS détenues pour protéger gratuitement les données des clients. Les frais AWS KMS standard s'appliquent lorsque vous utilisez une clé gérée par le client. Pour plus d'informations sur la tarification, consultez la section Tarification [du service de gestion des AWS clés](https://aws.amazon.com/kms/pricing/).

## Clés gérées par le client
<a name="customer-managed-keys"></a>

Les clés gérées par le client sont des clés KMS de votre AWS compte que vous créez, détenez et gérez. Vous avez le contrôle total de ces clés KMS, y compris l'établissement et la mise à jour de leurs politiques clés.

Lorsque vous configurez une clé gérée par le client, AWS DevOps l'agent l'utilise pour protéger les données de ressources sensibles. AWS DevOps L'agent utilise le [chiffrement des enveloppes](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#envelope-encryption) avec le jeu de clés hiérarchique du SDK de AWS chiffrement. Votre clé KMS est utilisée pour générer des clés de branche qui, à leur tour, protègent vos données.

Vous pouvez spécifier une clé gérée par le client lorsque vous créez les ressources suivantes :
+ **Espace agent** : chiffre les détails de l'espace agent et le contenu créés à partir de l'application Web de l' DevOps agent en rapport avec les enquêtes, les compétences et le chat.
+ **Service** : chiffre les informations d'identification des services tiers au repos.

Pour configurer une clé gérée par le client dans AWS DevOps l'Agent, procédez comme suit.

### Étape 1 : Créer une clé gérée par le client
<a name="step-1-create-a-customer-managed-key"></a>

Vous pouvez créer une clé symétrique gérée par le client à l'aide de la console AWS KMS ou de l'API AWS KMS. La clé doit répondre aux exigences suivantes :


| Propriété | Exigence | 
| --- | --- | 
| Type de clé | Symétrique | 
| Spécifications de la clé | SYMMETRIC\$1DEFAULT | 
| Utilisation de la clé | ENCRYPT\$1DECRYPT | 

**Note**  
** AWS DevOps L'agent ne prend en charge que les clés KMS de chiffrement symétriques avec la spécification de la `SYMMETRIC_DEFAULT` clé et l'utilisation de la `ENCRYPT_DECRYPT` clé. Les clés multirégionales et les clés asymétriques ne sont actuellement pas prises en charge.

Pour plus d'informations, consultez la section [Création d'une clé symétrique gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) dans le *Guide du développeur du service de gestion des AWS clés*.

### Étape 2 : définir la politique clé
<a name="step-2-set-the-key-policy"></a>

Les stratégies de clés contrôlent l’accès à votre clé gérée par le client. Chaque clé gérée par le client doit avoir exactement une stratégie de clé, qui contient des instructions qui déterminent les personnes pouvant utiliser la clé et comment elles peuvent l’utiliser.

Votre politique clé doit accorder des autorisations à la fois au principal appelant (votre identité IAM) et au service de l' AWS DevOps agent. AWS DevOps L'agent accède à votre clé à l'aide de deux ensembles d'informations d'identification :

1. **Vos informations d'identification de l'appelant** : utilisées pour toutes les opérations synchrones, y compris la validation des clés, le chiffrement au moment de la création des ressources et tout appel d'API renvoyant une réponse directe à l'appelant.

1. **AWS DevOps Agent de service principal** : utilisé pour les opérations asynchrones exécutées en arrière-plan, telles que les enquêtes opérationnelles, l'analyse des incidents, la corrélation des événements et la génération d'analyses des causes premières.

Le tableau suivant répertorie les actions KMS requises :


| Action KMS | Description | 
| --- | --- | 
| kms:DescribeKey | Valider la configuration des clés au moment de la création de la ressource | 
| kms:GenerateDataKey | Génération de clés de chiffrement des données pour le chiffrement des enveloppes | 
| kms:Decrypt | Déchiffrer des données | 
| kms:Encrypt | Chiffrer des données | 
| kms:ReEncrypt | Chiffrez à nouveau les données sous la même clé ou une clé différente | 

AWS DevOps L'agent valide toutes ces autorisations au moment de la configuration à l'aide d'opérations d'exécution à sec. Si une autorisation est manquante, la demande échoue avec une exception.

Voici un exemple de stratégie de clé. Remplacez les valeurs de l'espace réservé par les vôtres.

```
{
  "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 politique contient les déclarations suivantes :
+ **AllowKeyAdministration**— Accorde au root du compte un accès administratif complet à la clé. Remplacez `111122223333` par votre identifiant de AWS compte.
+ **AllowCallerAccessViaService**— Accorde à vos principaux IAM les autorisations KMS requises pour toutes les opérations synchrones AWS DevOps de l'agent. Cela inclut la validation des clés au moment de la création de la ressource, ainsi que les opérations de chiffrement et de déchiffrement pour tout appel d'API renvoyant une réponse directe à l'appelant. Cette `kms:ViaService` condition garantit que vous ne pouvez utiliser la clé que via le service AWS DevOps Agent. `111122223333`Remplacez-le par votre numéro de AWS compte et `us-east-1` par votre AWS région.
+ **AllowDevOpsAgentServiceAccessForAgentSpace**/**AllowDevOpsAgentServiceAccessForService**— Accorde au principal du `aidevops.amazonaws.com` service les autorisations KMS requises pour les opérations asynchrones. AWS DevOps L'agent utilise ce principe de service pour chiffrer et déchiffrer vos données lorsqu'il effectue des opérations en arrière-plan, telles que des enquêtes opérationnelles, l'analyse d'incidents, la corrélation d'événements entre les services et la génération d'analyses des causes premières. Sans cet accès, AWS DevOps l'agent ne peut pas lire les données chiffrées nécessaires pour mener des enquêtes en votre nom. La `aws:SourceArn` condition restreint l'accès aux demandes provenant des ressources de votre AWS DevOps agent et garantit que le `kms:EncryptionContext` contexte de chiffrement correspond à votre ressource ARNs. `111122223333`Remplacez-le par votre numéro de AWS compte et `us-east-1` par votre AWS région.

Pour plus d'informations sur les politiques clés, consultez la section [Politiques clés dans AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) dans le *Guide du développeur du service de gestion des AWS clés*.

### Étape 3 : Spécifier la clé lors de la création d'une ressource
<a name="step-3-specify-the-key-when-creating-a-resource"></a>

Après avoir créé votre clé et configuré la politique des clés, vous pouvez spécifier la clé lors de la création des ressources de AWS DevOps l'agent.

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

Pour configurer une clé gérée par le client lors de la création d'un espace agent dans la console :

1. Ouvrez la console de AWS DevOps l'agent.

1. Choisissez **Create Agent Space** ou **Register Service**.

1. Entrez les détails de l'espace de l'agent (nom, description et rôle IAM).

1. Développez la section **Configuration avancée**.

1. Sous **Type de clé de chiffrement**, sélectionnez **Clé gérée par le client**.

1. Choisissez une clé KMS dans la liste déroulante ou entrez un ARN de clé KMS.

1. Passez en revue la politique clé affichée dans la section extensible **Politique clé**. Assurez-vous d'avoir joint cette politique à votre clé KMS. Vous pouvez utiliser le bouton de copie pour copier la politique.

1. Terminez la configuration restante et choisissez **Create**.

**Note**  
**Si votre clé KMS ne figure pas dans la liste déroulante, vérifiez qu'elle répond aux exigences de l'[étape 1](#step-1-create-a-customer-managed-key) et que vous disposez des `kms:ListKeys` `kms:DescribeKey` autorisations nécessaires.

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

##### Création d'un espace d'agent avec une clé gérée par le client
<a name="creating-an-agent-space-with-a-customer-managed-key"></a>

Spécifiez le `kmsKeyArn` paramètre lors de la création d'un espace d'agent. La valeur doit être l'ARN complet de la clé KMS.

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

##### Enregistrement d'un service avec une clé gérée par le client
<a name="registering-a-service-with-a-customer-managed-key"></a>

Spécifiez le `kmsKeyArn` paramètre lors de l'enregistrement d'un service. La valeur doit être l'ARN complet de la clé KMS. Ce paramètre est pris en charge par tous les types de services, y compris les serveurs Dynatrace, ServiceNow, PagerDuty, GitLab GitHub, et MCP.

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

**Note**  
**Vous devez spécifier la clé gérée par le client au moment de la création de la ressource. Vous ne pouvez pas ajouter ou modifier la clé gérée par le client pour une ressource existante.

## AWS DevOps Contexte de chiffrement de l'agent
<a name="aws-devops-agent-encryption-context"></a>

Un [contexte de chiffrement](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) est un ensemble de paires clé-valeur non secrètes qui contiennent des informations contextuelles supplémentaires sur les données. AWS KMS utilise le contexte de chiffrement comme [données authentifiées supplémentaires](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad) pour prendre en charge le chiffrement authentifié. Lorsque vous incluez un contexte de chiffrement dans une demande de chiffrement de données, AWS KMS lie le contexte de chiffrement aux données chiffrées. Pour déchiffrer les données, vous devez inclure le même contexte de chiffrement dans la demande.

AWS DevOps L'agent utilise le contexte de chiffrement suivant pour toutes les opérations cryptographiques :

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

La valeur du contexte de chiffrement est l'ARN de la ressource de l' AWS DevOps agent cryptée. Vous pouvez utiliser ce contexte de chiffrement dans les conditions de votre politique de clé et dans AWS CloudTrail les journaux pour vérifier la manière dont votre clé est utilisée.

## Gestion des clés
<a name="key-management"></a>

Si vous désactivez ou planifiez la suppression de votre clé KMS, AWS DevOps l'agent ne peut pas déchiffrer vos données. Cela entraîne `AccessDeniedException` des erreurs lors des opérations de lecture de données cryptées.

**Important**  
**Si vous choisissez d'utiliser une clé gérée par le client, vous êtes responsable de la gestion de la clé et de ses autorisations. Si la clé est désactivée ou supprimée, ou si AWS DevOps l'agent perd l'autorisation d'utiliser la clé, vous perdez l'accès aux données chiffrées.

Le tableau suivant décrit les scénarios de défaillance courants :


| Action | Impact | 
| --- | --- | 
| Principales autorisations politiques révoquées | AccessDeniedExceptionsur les opérations de chiffrement et de déchiffrement | 
| La clé KMS est désactivée | DisabledExceptionsur les opérations de chiffrement et de déchiffrement | 
| La suppression de la clé KMS est planifiée | KMSInvalidStateExceptionsur les opérations de chiffrement et de déchiffrement | 
| La clé KMS est supprimée | Perte de données permanente : les données cryptées ne peuvent pas être récupérées | 

Avant de désactiver ou de supprimer une clé :

1. Vérifiez qu'aucune ressource active de AWS DevOps l'agent ne dépend de la clé.

1. Envisagez de désactiver d'abord la clé pour tester l'impact avant de planifier la suppression.

1. AWS KMS impose une période d'attente minimale avant la suppression de la clé, ce qui vous laisse le temps d'annuler si nécessaire.

**Remarque :** AWS DevOps L'agent ne rechiffre pas automatiquement les données sous une nouvelle clé. Si vous devez passer à une nouvelle clé gérée par le client, vous devez créer une nouvelle ressource avec la nouvelle clé.

## Surveillance de vos clés de chiffrement
<a name="monitoring-your-encryption-keys"></a>

Lorsque vous utilisez une clé gérée par le client avec AWS DevOps l'Agent, vous pouvez l'utiliser [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)pour suivre les demandes que AWS DevOps l'agent envoie à AWS KMS.

Vous pouvez filtrer CloudTrail les événements par :
+ **Source de l'événement** — `kms.amazonaws.com`
+ **Clé contextuelle de chiffrement** — `aws-crypto-ec:aws:aidevops:arn`
+ **ARN clé** — Votre client a géré l'ARN clé dans les paramètres de la demande

Pour plus d'informations, consultez la section [Journalisation des appels d'API AWS KMS AWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html) dans le *Guide du développeur du service de gestion des AWS clés*.

# Points de terminaison d'un VPC AWS PrivateLink
<a name="aws-devops-agent-security-vpc-endpoints-aws-privatelink"></a>

Vous pouvez l'utiliser AWS PrivateLink pour créer une connexion privée entre votre VPC et AWS DevOps l'agent. Vous pouvez accéder à AWS DevOps l'agent comme s'il se trouvait dans votre VPC, sans utiliser de passerelle Internet, de périphérique NAT, de connexion VPN ou de connexion Direct Connect. Les instances de votre VPC n'ont pas besoin d'adresses IP publiques pour accéder AWS DevOps à l'Agent.

Vous établissez cette connexion privée en créant un point de terminaison d'interface, alimenté par AWS PrivateLink. Nous créons une interface réseau de point de terminaison dans chaque sous-réseau que vous activez pour le point de terminaison d’interface. Il s'agit d'interfaces réseau gérées par le demandeur qui servent de point d'entrée pour le trafic destiné AWS DevOps à l'Agent.

Pour plus d'informations, consultez la section [Accès aux AWS services AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html) dans le *AWS PrivateLink Guide*.

## Considérations relatives aux points de AWS DevOps terminaison Agent-VPC
<a name="considerations-for-aws-devops-agent-vpc-endpoints"></a>

Avant de configurer un point de terminaison d'interface pour AWS DevOps l'agent, consultez les [considérations](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#considerations-interface-endpoints) du *AWS PrivateLink guide*.

AWS DevOps L'agent prend en charge les appels d'API via les points de terminaison VPC suivants.


| Catégorie | Suffixe de point de terminaison | 
| --- | --- | 
| AWS DevOps Actions de l'API Agent Control Plane | aidevops | 
| AWS DevOps Opérations d'exécution de l'agent | aidevops-dataplane | 
| AWS DevOps Événements pour agents Webhook | event-ai | 

## Création d'un point de terminaison d'interface pour AWS DevOps l'agent
<a name="create-an-interface-endpoint-for-aws-devops-agent"></a>

Vous pouvez créer un point de terminaison d'interface pour l' AWS DevOps agent à l'aide de la console Amazon VPC ou de l'interface de ligne de AWS commande (AWS CLI). Pour plus d’informations, consultez [Création d’un point de terminaison d’interface](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) dans le *Guide AWS PrivateLink *.

Créez un point de terminaison d'interface pour l' AWS DevOps agent en utilisant les noms de service suivants :
+ com.amazonaws. \$1région\$1 .aidevops
+ com.amazonaws. \$1région\$1 .aidevops dataplane
+ com.amazonaws. \$1région\$1 .event-ai

Après avoir créé le point de terminaison, vous avez la possibilité d’activer un nom d’hôte DNS privé. Activez ce nom d'hôte en sélectionnant **Activer le nom de DNS privé** dans la console VPC lorsque vous créez le point de terminaison d'un VPC.

Si vous activez le DNS privé pour le point de terminaison de l'interface, vous pouvez envoyer des demandes d'API à l' AWS DevOps agent en utilisant son nom DNS régional par défaut. L'exemple suivant montre le format du nom DNS régional par défaut.
+ aidevops. \$1région\$1 .api.aws
+ plan de données aidevops. \$1région\$1 .amazonaws.com
+ event-ai. \$1région\$1 .api.aws

## Création d’une politique de point de terminaison pour votre point de terminaison d’interface
<a name="create-an-endpoint-policy-for-your-interface-endpoint"></a>

Une politique de point de terminaison est une ressource IAM que vous pouvez attacher à votre point de terminaison d’interface. La politique de point de terminaison par défaut autorise un accès complet à l' AWS DevOps agent via le point de terminaison de l'interface. Pour contrôler l'accès autorisé à l' AWS DevOps Agent depuis votre VPC, associez une politique de point de terminaison personnalisée au point de terminaison de l'interface.

Une politique de point de terminaison spécifie les informations suivantes :
+ Principaux habilités à effectuer des actions (AWS comptes, utilisateurs IAM et rôles IAM).
+ Les actions qui peuvent être effectuées.
+ La ressource sur laquelle les actions peuvent être effectuées.

Pour plus d’informations, consultez [Contrôle de l’accès aux services à l’aide de politiques de point de terminaison](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) dans le *Guide AWS PrivateLink *.