Dépannage de 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 de 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 AWS sous forme de documents JSON 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 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 des politiques gérées par le client à l' AWS Management Console aide des options de l'éditeur Visual et JSON. 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 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 selon une syntaxe qui commence par les règles de notation d'JavaScript objet (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 elle valide, traite et transforme la politique avant de la stocker. Lorsque la politique est récupérée, AWS elle redevient lisible par l'homme sans modifier les autorisations. Cela peut entraîner des différences quant à ce que vous voyez dans l’éditeur visuel de politique ou sur l’onglet JSON.

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

  • 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, Compte AWS IDs les principaux éléments peuvent être remplacés par le Amazon Resource Name (ARN) du 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 le AWS Management Console, vous pouvez choisir de travailler entièrement dans l'éditeur JSON. Si vous ne modifiez jamais la politique dans l’éditeur Visuel et si vous choisissez Suivant dans l’éditeur JSON, la politique a moins de chances d’être restructurée. Lorsque vous utilisez l’éditeur Visuel, IAM peut restructurer la politique afin d’optimiser son apparence. 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 niveaux d'accès Amazon EC2 Read, les actions de votre politique prennent en charge le type de instance ressource. Indiquez la région, le compte et InstanceIdles valeurs de votre ressource. La politique accorde des autorisations à toutes les instances de votre compte si vous fournissez l’ID de votre compte et choisissez Tout pour la région et de l’ID de l’instance.

  • 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 d’autoriser un utilisateur à accéder uniquement aux actions et aux ressources dont il a besoin. Vous devez créer une instruction de refus 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, 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.

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

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. Vous ne pourrez pas consulter ni enregistrer la 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. 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

Il se peut que l’éditeur visuel affiche un avertissement indiquant que votre politique inclut un type de service, d’action ou 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 devez saisir manuellement les actions et les ressources ARNs pour terminer votre politique. Vous pouvez ignorer les avertissements et continuer. 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 devez saisir manuellement les actions et les ressources ARNs pour compléter votre politique. Vous pouvez ignorer les avertissements et continuer. 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 généralement disponible (GA) qui ne prend pas en charge l'éditeur visuel, vous devez saisir manuellement les actions et les ressources ARNs pour terminer votre politique. Vous pouvez ignorer les avertissements et continuer. 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 devez saisir manuellement les actions et les ressources ARNs pour terminer votre politique. Vous pouvez ignorer les avertissements et continuer. 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. Nous vous recommandons d’utiliser l’éditeur visuel en sélectionnant dans la liste des services et des actions. Complétez ensuite la section des ressources conformément aux invites. 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. Vérifiez les problèmes suivants :

    • Noms de type de service, d’action et de ressource mal orthographiés, tels que s2 au lieu s3 ou ListMyBuckets au lieu de ListAllMyBuckets

    • Texte superflu ARNs, tel que arn:aws:s3: : :*

    • Deux points manquants dans des actions, telles que iam.CreateUser

    Vous pouvez évaluer une politique susceptible de contenir des fautes de frappe en choisissant Suivant afin de vérifier le récapitulatif. Ensuite, confirmez que la politique contient les autorisations prévues.

Résolution des problèmes avec les 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 vous AWS ne parvenez pas à afficher le résumé d'une politique, vous verrez le document de politique JSON et l'erreur suivante s'afficher :

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érence de l’élément 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 lorsque 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 la politique, testez-la 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 ( Warning hazard sign icon with yellow triangle background. ), 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).

  • Faute de frappe : AWS vérifie que le JSON est syntaxiquement correct 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

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

Il est possible que les récapitulatifs de politique IAM ou l’éditeur visuel ne prennent pas en charge un service ou une action disponible pour tous. 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 à la console IAM AWS Management Console et ouvrez-la à https://console.aws.amazon.com/iam/l'adresse.

  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 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 à la console IAM AWS Management Console et ouvrez-la à https://console.aws.amazon.com/iam/l'adresse.

  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 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érence de l’élément 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.

Vérifiez que votre politique définit une action, une ressource ou une condition qui n’accorde pas d’autorisations. Consultez le résumé de votre politique à l'aide de la console IAM à https://console.aws.amazon.com/iam/l'adresse. 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 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 services qui fonctionnent avec IAM.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "arn:aws:ec2:us-east-2:111122223333: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.

JSON
{ "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.

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

Cette politique fournit des autorisations pour toutes les CloudFront actions. Mais comme elle définit la ressource S3 amzn-s3-demo-bucket 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.

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

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 choisissez le service pour consulter la documentation du service concernant les clés de condition.

JSON
{ "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.

JSON
{ "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.

JSON
{ "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 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 console IAM, lorsque vous affichez la page Détails de la 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 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.

Un utilisateur ou un rôle tente d'effectuer une action dans AWS et cette demande est refusée.

Déterminez 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.

Un utilisateur ou un rôle dispose d’autorisations qu’il n’utilise pas.

Envisagez de supprimer ces autorisations 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é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 politique 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 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 d'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 { }. Vous pouvez imbriquer d’autres objets dans un objet JSON en intégrant des accolades { } supplémentaires dans la paire extérieure. Une politique ne doit contenir qu’une seule paire d’accolades { } la plus externe. L'exemple suivant est incorrect car il contient deux objets au niveau supérieur (appelés dansred) :

JSON
{ "Version": "2012-10-17", "Statement": { "Effect":"Allow", "Action":"ec2:Describe*", "Resource":"*" } } { "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-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) :

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource":"*" }, { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-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 contient deux Statement éléments dans l'objet de politique (appelé inred) :

JSON
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }, "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-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) :

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource":"*" }, { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-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

Du côté valeur de la Statement name/value paire, l'objet ne doit être composé que d'un seul Effect élément, d'un Action élément et d'un Resource élément. La politique suivante est incorrecte, car elle comporte deux éléments Effect dans la Statement :

JSON
{ "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. Corrigez les erreurs figurant dans la politique avant d’enregistrer. Passez en revue et corrigez toutes les recommandations de validation de politique 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 :

JSON
{ "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 dansred) :

JSON
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Resource": "arn:aws:s3:::amzn-s3-demo-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) :

JSON
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-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 comparaison, 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 AWS fonctionnalités évoluent, de nouvelles fonctionnalités sont ajoutées aux politiques IAM 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 politique suivante est incorrecte, car elle utilise une variable de politique ${...} dans l'ARN d'une ressource. Mais il ne spécifie pas de version de syntaxe de politique prenant en charge les variables de stratégie (appelée dansred) :

{ "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) :

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