Résolution des problèmes liés aux 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.

Résolution des problèmes liés aux politiques IAM

Une politique est une entité dans AWS qui, lorsqu'elle est attachée à une identité ou à une ressource, définit les autorisations de cette dernière. AWS évalue ces politiques lorsqu'un principal, tel qu'un utilisateur, envoie une demande. Les autorisations dans les politiques déterminent si la demande est autorisée ou refusée. Les politiques sont stockées dans AWS sous forme de documents JSON attachés à des principaux en tant que politiques basées sur l'identité, ou à des ressources en tant que politiques basées sur les ressources. Vous pouvez attacher une politique basée sur identité à un principal (ou une identité), comme un groupe, un utilisateur ou un rôle IAM. 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 les politiques gérées par le client dans la AWS Management Console à l'aide des options des éditeurs visuel et JSON. Lorsque vous affichez une politique dans l'AWS Management Console, vous pouvez voir un résumé des autorisations accordées par cette politique. Vous pouvez utiliser l'éditeur visuel et des résumés de politique pour vous aider à diagnostiquer et à corriger les erreurs courantes lors de la gestion des politiques IAM.

N'oubliez pas que toutes les politiques IAM sont stockées à l'aide de la 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 la syntaxe JSON dans les politiques IAM, veuillez consulter Syntaxe du langage de politique JSON IAM .

Rubriques de résolution des erreurs de politique 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 la valide, la traite et la transforme avant de la stocker. Quand AWS renvoie la politique en réponse à une requête d'utilisateur, ou l'affiche sur la console, AWS transforme la politique en un format compréhensible par les utilisateurs sans modifier les autorisations accordées par cette politique. Cela peut entraîner des différences quant à ce que vous voyez dans l'éditeur visuel de politique ou sur l'onglet JSON : des blocs d'autorisation de l'éditeur visuel peuvent être ajoutés, supprimés ou réordonnés, et le contenu au sein d'un bloc peut être optimisé. Sous l'onglet JSON, les espaces blancs sans importance peuvent être supprimés et les éléments avec des mappes JSON peuvent être réorganisés. En outre, les ID d'Compte AWS au sein des éléments du principal peuvent être remplacés par l'ARN de l'Utilisateur racine d'un compte AWS. En raison de ces changements possibles, vous ne devez pas comparer les documents de politique JSON sous forme de chaînes.

Lorsque vous créez une politique gérée par le client dans AWS Management Console, vous pouvez choisir de travailler complètement dans l'éditeur JSON. Si vous ne modifiez jamais l'éditeur visuel et si vous choisissez Suivant dans l'éditeur JSON, la politique a moins de chances d'être restructurée. Toutefois, si vous créez une politique et si vous utilisez l'éditeur visuel pour apporter des modifications, ou si vous choisissez Suivant dans l'option éditeur visuel, IAM peut restructurer la politique pour optimiser son affichage 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 dans votre session d'édition, IAM détermine si la restructuration doit être enregistrée 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

IAM peut restructurer les politiques complexes ou celles qui ont des blocs d'autorisations ou des instructions qui permettent plusieurs services, types de ressources ou clés de condition.

Choix d'un ARN de ressource 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 Add ARN (Ajouter un ARN) pour fournir des détails sur votre ressource. Vous pouvez choisir l'une des options suivantes afin d'ajouter un ARN pour un type de ressource.

  • Utiliser le générateur d'ARN : selon le type de ressource, différents champs peuvent s'afficher pour créer votre ARN. 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 niveau d'accès Read (Lecture) Amazon EC2, les actions de votre politique prennent en charge le type de ressource instance. Vous devez fournir les valeurs Région, Compte et InstanceId pour 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.

  • Saisir ou coller l'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 de l'ARN (entre chaque paire de signes deux-points). Pour de plus amples informations, veuillez consulter É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 la logique d'évaluation de politique IAM, veuillez consulter Logique d'évaluation de politiques.

Note

Par défaut, seuls les Utilisateur racine d'un compte AWS ont 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 syntaxe JSON, vous pouvez également utiliser un caractère générique (*) afin de 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. Toutefois, vous devez ensuite taper les ARN des actions et ressources pour finaliser 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.

Afin d'utiliser la syntaxe JSON (comme les caractères génériques) pour les services, créez, modifiez et enregistrez votre politique à l'aide de l'option de l'éditeur JSON.

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

Lorsque vous utilisez l'éditeur visuel pour créer une politique, IAM crée un document JSON pour stocker votre politique. Vous pouvez afficher ce document basculant vers l'option de l'éditeur JSON. Si ce document JSON dépasse la limite de taille d'une politique, l'éditeur visuel affiche un message d'erreur et ne vous permet pas de passer en revue et d'enregistrer votre politique. Pour afficher la limitation IAM relative à la taille d'une politique gérée, veuillez consulter Limites des caractères d'IAM et de STS.

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

IAM vérifie les noms de services, les actions et les types de ressource pour les services qui prennent en charge les récapitulatifs de politique. 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 ce message d'avertissement et poursuivre, même si vous devez taper manuellement les ARN d'actions et de ressources pour finaliser votre politique. Vous pouvez également choisir l'option éditeur JSON afin de taper ou de coller un document de politique JSON.

  • Service personnalisé : les services personnalisés ne prennent pas en charge l'éditeur visuel. Si vous utilisez un service personnalisé, vous pouvez ignorer ce message d'avertissement et poursuivre, même si vous devez taper manuellement les ARN d'actions et de ressources pour finaliser votre politique. Vous pouvez également choisir l'option éditeur JSON afin de taper ou de coller un document de politique JSON.

  • Le service ne prend pas en charge l'éditeur visuel : si votre politique inclut un service disponible au public (GA) qui ne prend pas en charge l'éditeur visuel, vous pouvez ignorer ce message d'avertissement et poursuivre, même si vous devez taper manuellement les ARN d'actions et de ressources pour finaliser votre politique. Vous pouvez également choisir l'option éditeur JSON afin de taper ou de coller un document de politique JSON.

    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écapitulatifs de politique IAM.

  • 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 ce message d'avertissement et poursuivre, même si vous devez taper manuellement les ARN d'actions et de ressources pour finaliser votre politique. Vous pouvez également choisir l'option éditeur JSON afin de taper ou de coller un document de politique JSON.

    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écapitulatifs de politique IAM.

  • 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. Toutefois, IAM ne peut pas confirmer que vous avez inclus des ressources pour l'ensemble de vos actions sélectionnées et vous pouvez consulter des avertissements supplémentaires.

  • 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 d'action courante est l'ajout de texte superflu dans les ARN, par exemple arn:aws:s3: : :* ou des points-virgules manquants dans les actions, comme iam.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 console IAM comprend des tables de récapitulatif de la politique qui présentent le niveau d'accès, les ressources et les conditions autorisées ou rejetées pour chaque service dans 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 AWS est dans l'incapacité d'afficher le récapitulatif d'une politique, le document de politique JSON s'affiche à la place du récapitulatif et vous recevez l'erreur suivante :

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

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

  • Élément de politique non pris en charge : IAM ne prend pas en charge la génération de récapitulatifs de politique pour les politiques comprenant l'un des éléments de politique 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 console IAM, si un récapitulatif de politique inclut un symbole d'avertissement ( ), la politique peut alors 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

IAM vérifie les noms de services, les actions et les types de ressource pour les services qui prennent en charge les récapitulatifs de politique. 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 disponible pour tous est que son nom est orthographié correctement, il ne prend pas en charge les récapitulatifs de politique IAM. 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écapitulatifs de politique IAM.

  • 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).

  • Fautes de frappe : dAWSans le cadre de la validation de politique, vérifie que la syntaxe JSON est correcte et que la politique ne contient pas de fautes de frappe ou d'autres erreurs.

Note

Selon les bonnes pratiques, nous vous recommandons d'utiliser IAM Access Analyzer pour valider vos politiques IAM afin de garantir des autorisations sûres 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écapitulatifs de politique IAM

Lorsqu'un service ou une action disponible pour tous (GA) n'est pas reconnu par les résumés de politique IAM ou 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 contient un service pris en charge avec une action non prise en charge, le service ne prend pas en charge intégralement les récapitulatifs de politique IAM.

Pour demander à ce qu'un service ajoute la prise en charge du résumé de politique IAM ou de l'éditeur visuel
  1. Connectez-vous à l’outil AWS Management Console, puis ouvrez la console IAM à 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. Dans la partie gauche du pied de page d'AWS Management Console, choisissez Feedback (Commentaires). Dans la case Commentaires pour IAM, tapez I 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 que la prise en charge du récapitulatif de politique IAM d'une action manquante soit ajoutée à un service
  1. Connectez-vous à l’outil AWS Management Console, puis ouvrez la console IAM à 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. Dans la partie gauche du pied de page d'AWS Management Console, choisissez Feedback (Commentaires). Dans la case Commentaires pour IAM, tapez I 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, veuillez consulter Actions, ressources et clés de condition pour les services AWS.

Pour savoir si votre politique définit une action, une ressource ou une condition qui n'accorde pas d'autorisations, vous pouvez afficher le récapitulatif de politique relatif à votre politique avec la console IAM à 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.

Plusieurs raisons peuvent expliquer l'incapacité d'un élément à accorder des autorisations bien que celles-ci soient définies dans la politique IAM :

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 les ressources utilisant des noms ARN dans l'élément Resource de la 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 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 actions Amazon CloudFront.

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

Cette politique accorde des autorisations à toutes les actions CloudFront. 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" ] }] }

Pour corriger cette politique de façon à fournir uniquement des autorisations CloudFront, vous pouvez également supprimer 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, veuillez consulter Actions, ressources et clés de condition pour les services AWS 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.

Attacher ou détacher une politique dans un compte IAM

Certaines politiques gérées AWS sont reliées à un service. Ces politiques sont utilisées uniquement avec un rôle lié à un service pour ce service. Dans la console IAM, lorsque vous affichez la page Détails de la politique pour une politique, celle-ci contient une bannière signalant que la politique est liée à un service. Vous ne pouvez pas attacher cette politique à un utilisateur, un groupe ou un rôle au sein d'IAM. 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.

Modification des politiques pour vos identités IAM en fonction de leur activité

Vous pouvez mettre à jour les politiques pour vos identités IAM (utilisateurs, groupes et rôles) en fonction de leur activité. Pour cela, veuillez consulter les événements de votre compte dans l'historique des événements CloudTrail. Les journaux d'événements CloudTrail incluent des informations d'événement détaillées utilisables pour modifier les autorisations de la politique. Vous pouvez constater qu'un utilisateur ou un rôle essaie d'effectuer une action AWS et que la demande est 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 l'ARN de la ressource à laquelle il a tenté d'accéder avec sa 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 de plus amples informations sur l'utilisation de CloudTrail, veuillez consulter Affichage des événements CloudTrail dans la console CloudTrail dans le Guide de l'utilisateur AWS CloudTrail.

Résolution des problèmes de documents de politique JSON

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

Valider vos politiques

Lorsque vous créez ou modifiez une politique JSON, IAM peut effectuer une validation de politique pour vous aider à créer une politique efficace. IAM identifie les erreurs de syntaxe JSON, tandis que IAM Access Analyzer fournit des vérifications de politique supplémentaires avec des recommandations pour vous aider à affiner 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 Access Analyzer et les recommandations exploitables, veuillez consulter Validation de politique IAM Access Analyzer.

Je n'ai pas d'autorisations pour la validation de politique dans l'éditeur JSON

Dans la AWS Management Console, l'erreur suivante peut s'afficher si vous ne disposez pas des autorisations nécessaires pour afficher les résultats de validation de politique IAM 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.

Plusieurs objets de politique JSON

Une politique IAM doit inclure un seul objet JSON. Vous désignez un objet en le plaçant entre accolades { }. S'il est possible d'imbriquer d'autres objets au sein d'un objet JSON en incorporant des parenthèses { } supplémentaires dans la paire extérieure, une politique peut uniquement comporter une paire de parenthèses { } extérieure. L'exemple suivant est incorrect, car il comporte deux objets au premier niveau (indiqués en rouge) :

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

Plusieurs éléments de instruction JSON

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 politique IAM doit comporter un seul élément Statement, composé du nom (Statement) affiché à gauche d'un signe deux-points et 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 comporte deux éléments Statement dans l'objet de politique (marqué en rouge) :

{ "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 Effect, Action ou Resource dans un élément d'instruction JSON

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 éléments Effect, cela est très facile : si vous voulez que l'exemple précédent refuse des autorisations aux instances Amazon EC2, il vous suffit de 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, la stratégie suivante est incorrecte, car elle comporte plusieurs éléments Resource (marqués en rouge) :

{ "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 version JSON 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. En revanche, une version de politique est créée lorsque vous apportez des modifications à une politique gérée par le client dans IAM. La politique modifiée ne remplace pas la politique existante. À la place, IAM crée 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 fonctions d'AWS évoluent, de nouvelles fonctions sont ajoutées aux politiques IAM afin de prendre en charge ces fonctions. 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 politique suivante est incorrecte, car elle utilise une variable de politique ${...} dans l'ARN d'une ressource. Mais elle ne parvient pas à spécifier une version de syntaxe de politique prenant en charge les variables de politique (marquées en rouge) :

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

L'ajout d'un élément Version au début de la politique avec la valeur 2012-10-17, la première version de l'API IAM qui prend en charge les variables de politique, permet de corriger ce problème (marqué en gras) :

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