Dépannage des politiques IAM - AWS Identity and Access Management

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.

Dépannage des politiques IAM

Une politique est une entité AWS qui, lorsqu'elle est attachée à une identité ou à une ressource, définit ses autorisations. AWS évalue ces politiques lorsqu'un mandant, tel qu'un utilisateur, fait une demande. Les autorisations dans les politiques déterminent si la demande est autorisée ou refusée. Les politiques sont stockées sous AWS forme de JSON documents attachés aux principes en tant que politiques basées sur l'identité ou aux ressources en tant que politiques basées sur les ressources. Vous pouvez associer une politique basée sur l'identité à un principal (ou à une identité), tel qu'un IAM groupe, un utilisateur ou un rôle. Les politiques basées sur l'identité incluent des politiques gérées par AWS des politiques gérées par le client et des politiques en ligne. Vous pouvez créer et modifier des politiques gérées par le client à l' AWS Management Console aide des options Visual et de l'JSONéditeur. Lorsque vous consultez une politique dans le AWS Management Console, vous pouvez voir un résumé des autorisations accordées par cette politique. Vous pouvez utiliser l'éditeur visuel et les résumés des politiques pour vous aider à diagnostiquer et à corriger les erreurs courantes rencontrées lors de la gestion des IAM politiques.

N'oubliez pas que toutes les IAM politiques sont stockées selon une syntaxe qui commence par les règles de JavaScript Object Notation (JSON). Vous n'avez pas besoin de comprendre cette syntaxe pour créer ou gérer vos politiques. Vous pouvez créer et modifier une politique à l'aide de l'éditeur visuel dans l' AWS Management Console. Pour en savoir plus sur JSON la syntaxe des IAM politiques, consultezSyntaxe du langage de politique JSON IAM .

Rubriques de résolution des erreurs de stratégie IAM

Résolution des problèmes à l'aide de l'éditeur visuel

Lorsque vous créez ou modifiez une politique gérée par le client, vous pouvez utiliser les informations de l'éditeur visuel pour vous aider à résoudre les erreurs dans votre politique. Pour voir un exemple d'utilisation de l'éditeur visuel pour la création d'un politique, veuillez consulter Contrôle de l'accès aux identités.

Restructuration de politique

Lorsque vous créez une politique, AWS elle valide, traite et transforme la politique avant de la stocker. Lorsqu'il AWS renvoie la politique en réponse à une requête de l'utilisateur ou qu'il l'affiche dans la console, la AWS retransforme dans un format lisible par l'homme sans modifier les autorisations accordées par la politique. Cela peut entraîner des différences dans ce que vous voyez dans l'éditeur visuel ou dans JSONl'onglet des politiques : les blocs d'autorisation de l'éditeur visuel peuvent être ajoutés, supprimés ou réorganisés, et le contenu d'un bloc peut être optimisé. Dans l'JSONonglet, les espaces blancs insignifiants peuvent être supprimés et les éléments JSON des cartes peuvent être réorganisés. De plus Compte AWS IDs, les éléments principaux peuvent être remplacés par ARN le Utilisateur racine d'un compte AWS. En raison de ces modifications possibles, vous ne devez pas comparer les documents JSON de politique sous forme de chaînes.

Lorsque vous créez une politique gérée par le client dans le AWS Management Console, vous pouvez choisir de travailler entièrement dans l'JSONéditeur. Si vous n'apportez aucune modification dans l'éditeur visuel et que vous choisissez Suivant dans l'JSONéditeur, il est peu probable que la politique soit restructurée. Toutefois, si vous créez une politique et utilisez l'éditeur visuel pour apporter des modifications, ou si vous choisissez Suivant dans l'option de l'éditeur visuel, vous IAM pouvez restructurer la politique afin d'optimiser son apparence dans l'éditeur visuel.

Cette restructuration existe uniquement dans votre session d'édition et n'est pas enregistrée automatiquement.

Si votre politique est restructurée lors de votre session de modification, IAM déterminez s'il convient d'enregistrer la restructuration en fonction des situations suivantes :

Utilisation de cette option de l'éditeur Si vous modifiez votre politique Et puis choisissez Suivant dans cet onglet Lorsque vous sélectionnez Enregistrer les modifications
Visuel Modifié Visuel La stratégie est restructurée
Visuel Modifié JSON La stratégie est restructurée
Visuel Non modifié Visuel La stratégie est restructurée
JSON Modifié Visuel La stratégie est restructurée
JSON Modifié JSON La structure de la stratégie n'est pas modifiée
JSON Non modifié JSON La structure de la stratégie n'est pas modifiée

IAMpeut restructurer des politiques complexes ou des politiques comportant des blocs d'autorisation ou des instructions autorisant plusieurs services, types de ressources ou clés de condition.

Choix d'une ressource ARN dans l'éditeur visuel

Lorsque vous créez ou modifiez une politique à l'aide de l'éditeur visuel, vous devez d'abord choisir un service, puis les actions de ce dernier. Si le service et les actions que vous avez sélectionnés prennent en charge la sélection de ressources spécifiques, l'éditeur visuel répertorie les types de ressources pris en charge. Vous pouvez ensuite choisir Ajouter ARN pour fournir des informations sur votre ressource. Vous pouvez choisir l'une des options suivantes pour ajouter et ARN pour un type de ressource.

  • Utiliser le ARN générateur : en fonction du type de ressource, vous pouvez voir différents champs pour créer votreARN. Vous pouvez également choisir Any (Tout) pour fournir des autorisations pour n'importe quelle valeur du paramètre spécifié. Par exemple, si vous avez sélectionné le groupe de niveaux d'accès Amazon EC2 Read, les actions de votre politique prennent en charge le type de instance ressource. Vous devez fournir la région, le compte et InstanceIdles valeurs de votre ressource. Si vous indiquez votre ID de compte, mais que vous sélectionnez Tout pour la région et l'ID d'instance, la politique accorde des autorisations à toutes les instances de votre compte.

  • Tapez ou collez le ARN — Vous pouvez spécifier les ressources par leur Amazon Resource Name (ARN). Vous pouvez inclure un caractère générique (*) dans n'importe quel champ du ARN (entre chaque paire de deux-points). Pour plus d’informations, consultez Éléments de politique JSON IAM : Resource.

Refus des autorisations dans l'éditeur visuel

Par défaut, la politique que vous créez à l'aide de l'éditeur visuel autorise les actions que vous sélectionnez. Pour refuser les actions choisies, sélectionnez Switch to deny permissions (Basculer vers le refus des autorisations). Dans la mesure où les demandes sont refusées par défaut, nous vous recommandons, afin de garantir la sécurité, d'autoriser un utilisateur à accéder uniquement aux actions et aux ressources dont il a besoin. Vous devez créer une instruction pour refuser des autorisations uniquement si vous souhaitez remplacer une autorisation qui est également autorisée par une autre instruction ou politique. Nous vous recommandons de limiter le nombre de refus d'autorisation au minimum, car ils peuvent rendre la résolution des problèmes d'autorisation plus complexe. Pour plus d'informations sur le mode d'IAMévaluation de la logique des politiques, consultezLogique d'évaluation de politiques.

Note

Par défaut, seul le Utilisateur racine d'un compte AWS compte a accès à toutes les ressources de ce compte. Par conséquent, si vous n'êtes pas connecté en tant qu'utilisateur racine, vous devez disposer des autorisations accordées par une politique.

Spécification de plusieurs services dans l'éditeur visuel

Lorsque vous utilisez l'éditeur visuel pour construire une politique, vous pouvez sélectionner un seul service à la fois. Il s'agit d'une bonne pratique car l'éditeur visuel vous permet ensuite de choisir parmi les actions associées à ce service. Vous pouvez ensuite choisir parmi les ressources prises en charge par ce service et les actions sélectionnées. Cela facilite la création et la résolution des problèmes de votre politique.

Si vous connaissez la JSON syntaxe, vous pouvez également utiliser un caractère générique (*) pour spécifier manuellement plusieurs services. Par exemple, saisissez Code* pour fournir des autorisations pour tous les services commençant par Code, tels que CodeBuild et CodeCommit. Cependant, vous devez ensuite saisir les actions et les ressources ARNs pour compléter votre politique. De plus, lorsque vous enregistrez votre politique, celle-ci peut être restructurée de façon à inclure chaque service dans un bloc d'autorisation distinct.

Vous pouvez également utiliser une JSON syntaxe (telle que des caractères génériques) pour les services, créez, modifiez et enregistrez votre politique à l'aide de l'option de l'JSONéditeur.

Réduction de la taille de votre politique dans l'éditeur visuel

Lorsque vous utilisez l'éditeur visuel pour créer une politique, il IAM crée un JSON document pour stocker votre politique. Vous pouvez consulter ce document en passant à l'option JSONéditeur. Si ce JSON document dépasse la limite de taille d'une politique, l'éditeur visuel affiche un message d'erreur et ne vous permet pas de consulter et d'enregistrer votre politique. Pour connaître la IAM limite de taille d'une politique gérée, consultezIAMet limites STS de caractères.

Pour réduire la taille de votre politique dans l'éditeur visuel, modifiez votre politique ou déplacez les blocs d'autorisation dans une autre politique. Le message d'erreur inclut le nombre de caractères que votre document de politique contient, et vous pouvez utiliser ces informations pour vous aider à réduire la taille de votre politique.

Résolution des problèmes de services, d'actions ou de types de ressources non reconnus dans l'éditeur visuel

Lorsque vous créez ou modifiez une politique dans l'éditeur visuel, vous pouvez voir un avertissement indiquant que votre politique inclut un service, une action ou un type de ressource non reconnu.

Note

IAMpasse en revue les noms des services, les actions et les types de ressources pour les services qui prennent en charge les résumés des politiques. Toutefois, le récapitulatif de votre politique peut contenir une valeur de ressource ou une condition qui n'existe pas. Testez toujours vos stratégies avec le simulateur de stratégie.

Si votre stratégie inclut des services, des actions ou des types de ressource non reconnus, une des erreurs suivantes s'est produite :

  • Service d'aperçu : les services en mode aperçu ne prennent pas en charge l'éditeur visuel. Si vous participez à l'aperçu, vous pouvez ignorer l'avertissement et continuer, mais vous devez saisir manuellement les actions et les ressources ARNs pour terminer votre politique. Vous pouvez également choisir l'option de l'JSONéditeur pour taper ou coller un document JSON de politique.

  • Service personnalisé : les services personnalisés ne prennent pas en charge l'éditeur visuel. Si vous utilisez un service personnalisé, vous pouvez ignorer l'avertissement et continuer, mais vous devez saisir manuellement les actions et les ressources ARNs pour terminer votre politique. Vous pouvez également choisir l'option de l'JSONéditeur pour taper ou coller un document JSON de politique.

  • Le service ne prend pas en charge l'éditeur visuel — Si votre politique inclut un service généralement disponible (GA) qui ne prend pas en charge l'éditeur visuel, vous pouvez ignorer l'avertissement et continuer, mais vous devez saisir manuellement les actions et les ressources ARNs pour terminer votre politique. Vous pouvez également choisir l'option de l'JSONéditeur pour taper ou coller un document JSON de politique.

    Les services disponibles pour tous sont des services mis à disposition du public qui ne sont pas des services d'aperçu ou personnalisés. Si un service non reconnu est disponible pour tous et que son nom est orthographié correctement, il ne prend pas en charge l'éditeur visuel. Pour savoir comment demander la prise en charge de l'éditeur visuel ou du résumé de stratégie pour un service disponible pour tous (GA), consultez Le service ne prend pas en charge les résumés des IAM politiques.

  • L'action ne prend pas en charge l'éditeur visuel : si votre politique inclut un service pris en charge avec une action non prise en charge, vous pouvez ignorer l'avertissement et continuer, mais vous devez saisir manuellement la ressource ARNs pour terminer votre politique. Vous pouvez également choisir l'option de l'JSONéditeur pour taper ou coller un document JSON de politique.

    Si votre politique contient un service pris en charge avec une action non prise en charge, le service ne prend pas en charge intégralement l'éditeur visuel. Pour savoir comment demander la prise en charge de l'éditeur visuel ou du résumé de stratégie pour un service disponible pour tous (GA), consultez Le service ne prend pas en charge les résumés des IAM politiques.

  • Le type de ressource ne prend pas en charge l'éditeur visuel : si votre politique inclut une action prise en charge avec un type de ressource non pris en charge, vous pouvez ignorer le message d'avertissement et poursuivre. Cependant, nous IAM ne pouvons pas confirmer que vous avez inclus des ressources pour toutes les actions que vous avez sélectionnées, et des avertissements supplémentaires pourraient s'afficher.

  • Faute de frappe : lorsque vous saisissez manuellement un service, une action ou une ressource dans l'éditeur visuel, vous pouvez parfois créer une politique qui inclut une faute de frappe. Pour éviter cela, nous vous recommandons d'utiliser l'éditeur visuel en sélectionnant dans la liste des services et des actions, puis de compléter la section des ressources en suivant les invites. Toutefois, si un service ne prend pas totalement en charge l'éditeur visuel, vous devrez peut-être taper manuellement certaines parties de votre politique.

    Si vous êtes sûr que votre politique ne contient aucune des erreurs ci-dessus, il se peut que votre politique contienne une faute de frappe. Recherchez d'éventuels noms de services, d'actions ou de types de ressource mal orthographiés. Par exemple, il se peut que vous ayez utilisé s2 au lieu de s3 et ListMyBuckets au lieu de ListAllMyBuckets. Une autre faute de frappe courante est l'inclusion de texte inutile dansARNs, par exemplearn:aws:s3: : :*, ou l'absence de deux points dans des actions, telles queiam.CreateUser. Vous pouvez évaluer une politique susceptible de contenir des fautes de frappe en choisissant Suivant afin de vérifier le résumé de la politique et de confirmer qu'elle contient les autorisations prévues.

Résolution des problèmes à l'aide des récapitulatifs de politique

Vous pouvez diagnostiquer et résoudre les problèmes liés aux résumés de politique.

Récapitulatif de politique manquant

La IAM console inclut des tableaux récapitulatifs des politiques qui décrivent le niveau d'accès, les ressources et les conditions autorisées ou refusées pour chaque service d'une politique. Les politiques sont résumées dans trois tables : récapitulatif de la politique, récapitulatif du service et récapitulatif de l'action. La table récapitulative de la politique comprend une liste des services et des résumés des autorisations définies par la politique choisie. Vous pouvez afficher le résumé de la politique pour toutes les politiques attachées à une entité sur la page Détails de la politique pour la politique en question. Vous pouvez afficher le récapitulatif des politiques gérées sur la page Politiques. Si vous ne parvenez pas à afficher le résumé d'une politique, AWS c'est le document de JSON stratégie qui s'affiche à la place du résumé, et le message d'erreur suivant s'affiche :

Aucun récapitulatif pour cette politique ne peut être généré. Vous pouvez toujours consulter ou modifier le document JSON de politique.

Si votre politique ne comprend pas de récapitulatif, une des erreurs suivantes s'est produite :

  • Élément de stratégie non pris en charge : IAM ne prend pas en charge la génération de résumés de stratégie pour les politiques qui incluent l'un des éléments de stratégie suivants :

    • Principal

    • NotPrincipal

    • NotResource

  • Aucune autorisation de politique : si une politique ne fournit pas d'autorisations effectives, le récapitulatif de politique ne peut pas être généré. Par exemple, si une politique contient une instruction unique avec l'élément "NotAction": "*", cela signifie qu'elle accorde l'accès à toutes les actions, sauf « toutes les actions »(*). Cela signifie qu'elle accorde l'accès Deny ou Allow à rien.

    Note

    Soyez prudent lorsque vous utilisez ces éléments de politique tels que NotPrincipal, NotAction et NotResource. Pour en savoir plus sur l'utilisation des éléments de la politique, veuillez consulter Références des éléments de politique JSON IAM.

    Vous pouvez créer une politique qui ne fournit pas d'autorisations effectives si vous fournissez des services et des ressources non appariés. Cela peut se produire si vous précisez des actions dans un service et des ressources provenant d'un autre service. Dans ce cas, le récapitulatif de la politique n'apparaît pas. La seule indication qu'un problème est survenu est que la colonne de ressource du récapitulatif contient une ressource provenant d'un service différent. Si cette colonne contient une ressource non appariée, recherchez d'éventuelles erreurs dans votre politique. Afin de mieux comprendre vos politiques, vous devez toujours les tester avec le simulateur de politique.

Le récapitulatif de politique inclut des services, des actions ou des types de ressource non reconnus

Dans la IAM console, si un résumé de politique inclut un symbole d'avertissement ( Warning hazard sign icon with yellow triangle background. ), la politique peut inclure un service, une action ou un type de ressource non reconnu. Pour en savoir plus sur les avertissements dans un récapitulatif de politique, veuillez consulter Récapitulatif de la politique (liste des services).

Note

IAMpasse en revue les noms des services, les actions et les types de ressources pour les services qui prennent en charge les résumés des politiques. Toutefois, le récapitulatif de votre politique peut contenir une valeur de ressource ou une condition qui n'existe pas. Testez toujours vos stratégies avec le simulateur de stratégie.

Si votre stratégie inclut des services, des actions ou des types de ressource non reconnus, une des erreurs suivantes s'est produite :

  • Service d'aperçu : les services en mode aperçu ne prennent pas en charge les récapitulatifs de politique.

  • Service personnalisé : les services personnalisés ne prennent pas en charge les récapitulatifs de politique.

  • Le service ne prend pas en charge les récapitulatifs : si votre politique contient un service disponible pour tous (GA) qui ne prend pas en charge les récapitulatifs de politique, le service figure dans la section Unrecognized services (Services non reconnus) de la table récapitulative de la politique. Les services disponibles pour tous sont des services mis à disposition du public qui ne sont pas des services d'aperçu ou personnalisés. Si un service non reconnu est généralement disponible et que son nom est correctement orthographié, le service ne prend pas en charge les résumés des IAM politiques. Pour savoir comment demander la prise en charge du récapitulatif de politique d'un service disponible pour tous (GA), veuillez consulter Le service ne prend pas en charge les résumés des IAM politiques.

  • L'action ne prend pas en charge les récapitulatifs : si votre politique contient un service pris en charge avec une action non prise en charge, l'action figure alors dans la section Unrecognized actions (Actions non reconnues) de la table récapitulative du service. Pour en savoir plus sur les avertissements dans un récapitulatif de service, consultez Récapitulatif du service (liste des actions).

  • Le type de ressource ne prend pas en charge les récapitulatifs : si votre politique inclut une action prise en charge avec un type de ressource non pris en charge, la ressource figure dans la section Unrecognized resource types (Types de ressource non reconnus) de la table récapitulative du service. Pour en savoir plus sur les avertissements dans un récapitulatif de service, consultez Récapitulatif du service (liste des actions).

  • Faute de frappe : AWS vérifie que la syntaxe JSON est correcte et que la politique n'inclut pas de fautes de frappe ou d'autres erreurs dans le cadre de la validation de la politique.

Note

En tant que bonne pratique, nous vous recommandons d'utiliser IAM Access Analyzer pour valider vos IAM politiques afin de garantir des autorisations sécurisées et fonctionnelles. Nous vous recommandons d'ouvrir vos politiques existantes, d'examiner et de résoudre toutes les recommandations de validation des politiques.

Le service ne prend pas en charge les résumés des IAM politiques

Lorsqu'un service ou une action généralement disponible (GA) n'est pas reconnu par les résumés des IAM politiques ou par l'éditeur visuel, il est possible que le service ne prenne pas en charge ces fonctionnalités. Les services disponibles pour tous sont des services mis à disposition du public qui ne sont pas des services d'aperçu ou personnalisés. Si un service non reconnu est disponible pour tous et que son nom est orthographié correctement, il ne prend pas en charge ces fonctionnalités. Si votre politique inclut un service pris en charge avec une action non prise en charge, le service ne prend pas entièrement en charge les résumés des IAM politiques.

Pour demander à un service d'ajouter un résumé des IAM politiques ou le support d'un éditeur visuel
  1. Connectez-vous à la IAM console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

  2. Recherchez la stratégie incluant le service non pris en charge :

    • Si la stratégie est une stratégie gérée, choisissez Stratégies dans le panneau de navigation. Dans la liste des stratégies, choisissez le nom de la stratégie à afficher.

    • Si la stratégie est une stratégie en ligne attachée à l'utilisateur, choisissez Utilisateurs dans le panneau de navigation. Dans la liste des utilisateurs, choisissez le nom de l'utilisateur dont vous souhaitez afficher la politique. Dans le tableau des politiques dédiées à l'utilisateur, développez l'en-tête du récapitulatif de politique à afficher.

  3. Sur le côté gauche du AWS Management Console pied de page, choisissez Feedback. Dans le champ Feedback for, IAM tapezI request that the <ServiceName> service add support for IAM policy summaries and the visual editor. Si vous avez besoin de plusieurs services pour prendre en charge les récapitulatifs, saisissez I request that the <ServiceName1>, <ServiceName2>, and <ServiceName3> services add support for IAM policy summaries and the visual editor.

Pour demander à un service d'ajouter un résumé des IAM politiques, un support pour une action manquante
  1. Connectez-vous à la IAM console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

  2. Recherchez la stratégie incluant le service non pris en charge :

    • Si la stratégie est une stratégie gérée, choisissez Stratégies dans le panneau de navigation. Dans la liste des stratégies, choisissez le nom de la stratégie à afficher.

    • Si la stratégie est une stratégie en ligne attachée à l'utilisateur, choisissez Utilisateurs dans le panneau de navigation. Dans la liste des utilisateurs, choisissez le nom de l'utilisateur dont vous souhaitez afficher la politique. Dans le tableau des politiques dédiées à l'utilisateur, sélectionnez le nom de la politique à afficher pour développer le récapitulatif de politique.

  3. Dans le récapitulatif de la politique, sélectionnez le nom du service incluant une action non prise en charge.

  4. Sur le côté gauche du AWS Management Console pied de page, choisissez Feedback. Dans le champ Feedback for, IAM tapezI request that the <ServiceName> service add IAM policy summary and the visual editor support for the <ActionName> action. Si vous souhaitez signaler plusieurs actions non prises en charge, saisissez I request that the <ServiceName> service add IAM policy summary and the visual editor support for the <ActionName1>, <ActionName2>, and <ActionName3> actions.

Pour demander qu'un service différent contienne des actions manquantes, répétez les trois dernières étapes.

Ma politique n'accorde pas les autorisations escomptées

Pour attribuer des autorisations à un utilisateur, un groupe, un rôle ou une ressource, vous devez créer une politique, autrement dit un document qui définit les autorisations. Le document de politique inclut les éléments suivants :

  • Effet : si la politique autorise ou refuse l'accès

  • Action : la liste des actions qui sont autorisées ou rejetées par la politique

  • Ressource : la liste des ressources sur lesquelles les actions peuvent se produire

  • Condition (Facultatif) : les circonstances dans lesquelles la politique accorde l'autorisation

Pour en savoir plus sur ces éléments et d'autres éléments d'une politique, veuillez consulter Références des éléments de politique JSON IAM.

Pour accorder l'accès, votre politique doit définir une action avec une ressource prise en charge. Si votre politique inclut également une condition, cette condition doit inclure une clé de condition ou doit s'appliquer à l'action. Pour connaître les ressources qu'une action prend en charge, veuillez consulter la documentation AWS correspondant à votre service. Pour savoir quelles conditions sont prises en charge par une action, voir Actions, ressources et clés de condition pour les AWS services.

Pour savoir si votre politique définit une action, une ressource ou une condition qui n'accorde pas d'autorisations, vous pouvez consulter le résumé de votre politique à l'aide de la IAM console à l'adresse https://console.aws.amazon.com/iam/. Vous pouvez utiliser les récapitulatifs de politiques afin d'identifier et de corriger les problèmes dans votre politique.

Il existe plusieurs raisons pour lesquelles un élément peut ne pas accorder d'autorisations alors qu'il est défini dans la IAM politique :

Pour voir des exemples de récapitulatifs de politiques incluant des avertissements, veuillez consulter Récapitulatif de la politique (liste des services).

Une action est définie sans ressource applicable

La politique ci-dessous définit toutes les actions ec2:Describe* et définit une ressource spécifique. Aucune des actions ec2:Describe n'est autorisée, car aucune de ces actions ne prend en charge les autorisations de niveau ressource. Les autorisations au niveau des ressources signifient que l'action prend en charge l'utilisation des ressources ARNsdans l'élément de Resourcela politique. Si une action ne prend pas en charge les autorisations de niveau ressource, cette instruction de la politique doit utiliser le caractère générique (*) dans l'élément Resource. Pour savoir quels services prennent en charge les autorisations au niveau des ressources, veuillez consulter AWS des services qui fonctionnent avec IAM.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "arn:aws:ec2:us-east-2:ACCOUNT-ID:instance/*" }] }

Cette politique ne fournit pas d'autorisations, et le récapitulatif de politique inclut l'erreur suivante :

This policy does not grant any permissions. To grant access, policies must have an action that has an applicable resource or condition.

Pour corriger cette politique, vous devez utiliser le caractère générique * dans l'élément Resource.

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

Une ressource est définie sans action applicable

La politique ci-dessous définit une ressource de compartiment Amazon S3, mais n'inclut pas d'action S3 pouvant être effectuée sur cette ressource. Cette politique accorde également un accès complet à toutes les CloudFront actions Amazon.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "cloudfront:*", "Resource": [ "arn:aws:cloudfront:*", "arn:aws:s3:::examplebucket" ] }] }

Cette politique fournit des autorisations pour toutes les CloudFront actions. Mais comme elle définit la ressource S3 examplebucket sans définir d'actions S3, le récapitulatif de politique inclut l'avertissement suivant :

This policy defines some actions, resources, or conditions that do not provide permissions. To grant access, policies must have an action that has an applicable resource or condition.

Pour corriger cette politique de façon à fournir des autorisations de compartiment S3, vous devez définir des actions S3 pouvant être exécutées sur une ressource du compartiment.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "cloudfront:*", "s3:CreateBucket", "s3:ListBucket*", "s3:PutBucket*", "s3:GetBucket*" ], "Resource": [ "arn:aws:cloudfront:*", "arn:aws:s3:::examplebucket" ] }] }

Sinon, pour corriger cette politique visant à fournir uniquement des CloudFront autorisations, supprimez la ressource S3.

Une condition est définie sans action applicable

La politique ci-dessous définit deux actions Amazon S3 pour toutes les ressources S3, si le préfixe S3 est égal à custom et l'ID de version à 1234. Toutefois, la clé de condition s3:VersionId est utilisée pour le balisage de version d'objet et n'est pas pris en charge par les actions de compartiment définies. Pour savoir quelles conditions sont prises en charge par une action, consultez Actions, ressources et clés de condition pour les AWS services et suivez le lien vers la documentation du service pour les clés de condition.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucketVersions", "s3:ListBucket" ], "Resource": "*", "Condition": { "StringEquals": { "s3:prefix": [ "custom" ], "s3:VersionId": [ "1234" ] } } } ] }

Cette politique fournit les autorisations pour l'action s3:ListBucketVersions et l'action s3:ListBucket si le nom du compartiment inclut le préfixe custom. Mais comme la condition s3:VersionId n'est prise en charge par aucune des actions définies, le récapitulatif de politique inclut l'erreur suivante :

This policy does not grant any permissions. To grant access, policies must have an action that has an applicable resource or condition.

Pour corriger cette politique de façon à utiliser le balisage de version d'objet S3, vous devez définir une action S3 qui prend en charge la clé de condition s3:VersionId.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucketVersions", "s3:ListBucket", "s3:GetObjectVersion" ], "Resource": "*", "Condition": { "StringEquals": { "s3:prefix": [ "custom" ], "s3:VersionId": [ "1234" ] } } } ] }

Cette politique fournit des autorisations pour chaque action et condition de la politique. Toutefois, la politique ne fournit toujours pas d'autorisations, car il n'existe pas de cas où une même action correspond à deux conditions. À la place, vous devez créer deux instructions séparées : chacune comprendra uniquement les actions et les conditions auxquelles elles s'appliquent.

Pour corriger cette politique, créez deux instructions. La première instruction inclut les actions qui prennent en charge la condition s3:prefix, et la seconde instruction inclut les actions qui prennent en charge la condition s3:VersionId.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucketVersions", "s3:ListBucket" ], "Resource": "*", "Condition": { "StringEquals": { "s3:prefix": "custom" } } }, { "Effect": "Allow", "Action": "s3:GetObjectVersion", "Resource": "*", "Condition": { "StringEquals": { "s3:VersionId": "1234" } } } ] }

Résolution des problèmes de gestion des politiques

Vous pouvez diagnostiquer et résoudre les problèmes liés à la gestion des politiques.

Joindre ou détacher une police d'assurance dans un compte IAM

Certaines politiques AWS gérées sont liées à un service. Ces politiques sont utilisées uniquement avec un rôle lié à un service pour ce service. Dans la IAM console, lorsque vous consultez la page des détails de la politique d'une politique, celle-ci inclut une bannière indiquant que la politique est liée à un service. Vous ne pouvez pas associer cette politique à un utilisateur, à un groupe ou à un rôle au sein de celui-ciIAM. Lorsque vous créez un rôle lié à un service pour le service, cette politique est automatiquement attachée à votre nouveau rôle. Puisque la politique est obligatoire, vous ne pouvez pas la détacher du rôle lié au service.

Modifier les politiques relatives à vos IAM identités en fonction de leur activité

Vous pouvez mettre à jour les politiques relatives à vos IAM identités (utilisateurs, groupes et rôles) en fonction de leur activité. Pour ce faire, consultez les événements de votre compte dans CloudTrail l'historique des événements. CloudTrail les journaux d'événements contiennent des informations détaillées sur les événements que vous pouvez utiliser pour modifier les autorisations de la politique. Il se peut qu'un utilisateur ou un rôle tente d'effectuer une action dans AWS et que cette demande soit refusée. Dans ce cas, vous pouvez voir si l'utilisateur ou le rôle doit avoir l'autorisation d'effectuer l'action. Si tel est le cas, vous pouvez ajouter l'action et même ARN la ressource à laquelle ils ont tenté d'accéder à leur politique. Sinon, si l'utilisateur ou le rôle dispose d'autorisations qu'il n'utilise pas, vous pouvez envisager de supprimer ces autorisations à partir de leur politique. Veillez à ce que vos politiques accordent le privilège le plus faible requis pour exécuter uniquement les actions nécessaires. Pour plus d'informations sur l'utilisation CloudTrail, consultez la section Affichage CloudTrail des événements dans la CloudTrail console dans le guide de AWS CloudTrail l'utilisateur.

Résoudre les problèmes liés aux documents JSON de politique

Vous pouvez diagnostiquer et résoudre les problèmes liés aux documents JSON de politique.

Valider vos politiques

Lorsque vous créez ou modifiez une JSON politique, vous IAM pouvez effectuer une validation de stratégie pour vous aider à créer une politique efficace. IAMidentifie les erreurs de JSON syntaxe, tandis qu'IAMAccess Analyzer fournit des vérifications de politique supplémentaires avec des recommandations pour vous aider à affiner davantage vos politiques. Pour en savoir plus sur la validation de politiques, veuillez consulter Validation de politiques IAM. Pour en savoir plus sur les vérifications des politiques IAM d'Access Analyzer et les recommandations pratiques, consultez la section Validation des politiques IAMAccess Analyzer.

Je ne suis pas autorisé à valider les politiques dans l'JSONéditeur

Dans le AWS Management Console, le message d'erreur suivant peut s'afficher si vous n'êtes pas autorisé à consulter les résultats de validation des politiques IAM d'Access Analyzer :

You need permissions. You do not have the permissions required to perform this operation. Ask your administrator to add permissions.

Pour corriger cette erreur, demandez à votre administrateur d'ajouter l'autorisation access-analyzer:ValidatePolicy pour vous.

Plus d'un objet JSON de politique

Une IAM politique doit être composée d'un seul et unique JSON objet. Vous désignez un objet en le plaçant entre accolades { }. Bien que vous puissiez imbriquer d'autres objets dans un JSON objet en incorporant des {} accolades supplémentaires dans la paire extérieure, une politique ne peut contenir qu'une seule paire d'accolades la plus externe de {} accolades. L'exemple suivant est incorrect car il contient deux objets au niveau supérieur (appelés dans red):

{ "Version": "2012-10-17", "Statement": { "Effect":"Allow", "Action":"ec2:Describe*", "Resource":"*" } } { "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-bucket/*" } }

Toutefois, il est possible de rectifier l'exemple précédent à l'aide d'une syntaxe de politique appropriée. Au lieu d'utiliser deux objets de politique complets, avec chacun son propre élément Statement, vous pouvez combiner les deux blocs en un seul élément Statement. La valeur de l'élément Statement est un tableau de deux objets, comme illustré dans l'exemple suivant (marqué en gras) :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource":" *" }, { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-bucket/*" } ] }

Plus d'un élément de JSON déclaration

Au premier abord, cette erreur peut sembler être une variante de celle de la section précédente. Toutefois, d'un point de vue syntaxique, il s'agit d'un type d'erreur différent. L'exemple suivant comporte un seul objet de politique, comme indiqué par la paire de parenthèses { } au premier niveau. Toutefois, cet objet contient deux éléments Statement.

Une IAM politique ne doit contenir qu'un seul Statement élément, à savoir le nom (Statement) apparaissant à gauche de deux points, suivi de sa valeur à droite. La valeur d'un élément Statement doit être un objet, indiqué par des accolades { }, contenant un élément Effect, un élément Action et un élément Resource. L'exemple suivant est incorrect car il contient deux Statement éléments dans l'objet de politique (appelé dans red):

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }, "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-bucket/*" } }

Un objet de valeur peut être un tableau de plusieurs objets de valeur. Pour résoudre ce problème, combinez les deux éléments Statement en un même élément avec un tableau d'objets, comme illustré dans l'exemple suivant (marqué en gras) :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource":"*" }, { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-bucket/*" } ] }

La valeur de l'élément Statement est un tableau d'objets. Dans cet exemple, le tableau se compose de deux objets, chaque objet étant à lui seul une valeur correcte pour un élément Statement. Chaque objet du tableau est séparé par des virgules.

Plusieurs éléments d'effet, d'action ou de ressource dans un élément de JSON déclaration

Dans la partie valeur de la paire nom/valeur de Statement, l'objet doit comporter uniquement un élément Effect, un élément Action et un élément Resource. La politique suivante est incorrecte, car elle comporte deux éléments Effect dans l'objet de valeur de Statement :

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Effect": "Allow", "Action": "ec2:* ", "Resource": "*" } }
Note

Le moteur de politiques n'autorise pas ce type d'erreurs dans les politiques nouvelles ou modifiées. Il continue toutefois à autoriser les politiques enregistrées avant sa mise à jour. Les politiques existantes contenant l'erreur se comportent comme suit :

  • Plusieurs éléments Effect : seul le dernier élément Effect est pris en compte. Les autres sont ignorés.

  • Plusieurs éléments Action : tous les éléments Action sont combinés en interne et traités comme s'il s'agissait d'une seule liste.

  • Plusieurs éléments Resource : tous les éléments Resource sont combinés en interne et traités comme s'il s'agissait d'une seule liste.

Le moteur de politique ne vous permet pas d'enregistrer une politique contenant des erreurs syntaxiques. Vous devez corriger les erreurs contenues dans la politique avant de l'enregistrer. Nous vous recommandons de consulter les recommandations de validation de politique appropriées pour vos politiques.

Dans chaque cas, la solution consiste à supprimer l'élément supplémentaire incorrect. Pour les Effect éléments, c'est simple : si vous souhaitez que l'exemple précédent refuse les autorisations aux EC2 instances Amazon, vous devez supprimer la ligne "Effect": "Allow", de la politique, comme suit :

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "ec2:* ", "Resource": "*" } }

Toutefois, lorsque l'élément dupliqué est Action ou Resource, la résolution peut s'avérer plus complexe. Vous voulez peut-être autoriser (ou refuser) des autorisations pour plusieurs actions ou vous souhaitez contrôler l'accès à plusieurs ressources. Par exemple, l'exemple suivant est incorrect car il comporte plusieurs Resource éléments (appelés dans red):

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-bucket", "Resource": "arn:aws:s3:::my-bucket/*" } }

Chacun des éléments requis dans l'objet de valeur d'un élément Statement ne doit y figurer qu'une seule fois. La solution consiste à placer chaque valeur dans un tableau. L'exemple suivant illustre cette méthode : les deux éléments Resource sont inclus dans un même élément Resource avec un tableau comme objet de valeur (marqué en gras) :

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*" ] } }

Élément de JSON version manquant

Un élément de politique Version est différent d'une version de politique. L'élément de politique Version est utilisé dans une politique pour définir la version de la langue de la politique. Une version de politique, en revanche, est créée lorsque vous apportez des modifications à une politique gérée par le client dansIAM. La politique modifiée ne remplace pas la politique existante. Il IAM crée plutôt une nouvelle version de la politique gérée. Pour en savoir plus sur l'élément de politique Version, consultez Éléments de politique JSON IAM : Version. Pour en savoir plus sur les versions de politiques, consultez Gestion des versions des politiques IAM.

À mesure que les AWS fonctionnalités évoluent, de nouvelles fonctionnalités sont ajoutées aux IAM politiques pour prendre en charge ces fonctionnalités. Parfois, la mise à jour de la syntaxe de politique inclut un nouveau numéro de version. Si vous utilisez les nouvelles fonctions de la syntaxe de politique dans votre politique, vous devez indiquer le numéro de la version utilisée au moteur d'analyse de politique. Le numéro de version de politique par défaut est « 2008-10-17 ». Si vous voulez utiliser une fonction de politique plus récente, vous devez spécifier le numéro de version prenant en charge cette fonction. Nous vous recommandons de toujours inclure le numéro de version de syntaxe de politique le plus récent, à savoir actuellement "Version": "2012-10-17". Par exemple, la stratégie suivante est incorrecte car elle utilise une variable de stratégie ${...} dans le ARN pour une ressource. Mais il ne parvient pas à spécifier une version de syntaxe de politique qui prend en charge les variables de stratégie (appelées dans red):

{ "Statement": { "Action": "iam:*AccessKey*", "Effect": "Allow", "Resource": "arn:aws:iam::123456789012:user/${aws:username}" } }

L'ajout d'un Version élément en haut de la politique avec la valeur2012-10-17, la première IAM API version qui prend en charge les variables de stratégie, résout ce problème (indiqué en gras) :

{ "Version": "2012-10-17", "Statement": { "Action": "iam:*AccessKey*", "Effect": "Allow", "Resource": "arn:aws:iam::123456789012:user/${aws:username}" } }