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.
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
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. Lorsque la politique est récupérée, AWS la retransforme dans un format 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, les ID du Compte AWS au sein des éléments du principal peuvent être remplacés par l’Amazon Resource Name (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 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 niveau d'accès Read (Lecture) Amazon EC2, les actions de votre politique prennent en charge le type de ressource
instance
. Fournissez les valeurs Région, Compte et InstanceId pour 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 en savoir plus, 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 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, 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.
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. 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 IAMet 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. 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 taper manuellement les ARN d’actions et de ressources pour finaliser 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 taper manuellement les ARN d’actions et de ressources pour finaliser 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 disponible au public (GA) qui ne prend pas en charge l’éditeur visuel, vous devez taper manuellement les ARN d’actions et de ressources pour finaliser 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 taper manuellement les ARN d’actions et de ressources pour finaliser 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 lieus3
ouListMyBuckets
au lieu deListAllMyBuckets
-
Texte inutile dans les ARN, 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 AWS est dans l’incapacité d’afficher le récapitulatif d’une politique, le document de politique JSON s’affiche 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èsDeny
ouAllow
à rien.Note
Soyez prudent lorsque vous utilisez ces éléments de politique tels que
NotPrincipal
,NotAction
etNotResource
. 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 (
), 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
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
Connectez-vous à l'outil AWS Management Console, puis ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/
. -
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.
-
-
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, saisissezI 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
Connectez-vous à l'outil AWS Management Console, puis ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/
. -
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.
-
-
Dans le récapitulatif de la politique, sélectionnez le nom du service incluant une action non prise en charge.
-
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, saisissezI 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, veuillez consulter Actions, ressources et clés de condition pour les services AWS.
Vérifiez que votre politique définit une action, une ressource ou une condition qui n’accorde pas d’autorisations. Consultez le récapitulatif de la politique pour votre politique à l’aide de la console IAM à l’adresse https://console.aws.amazon.com/iam/
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:::amzn-s3-demo-bucket
"
]
}]
}
Cette politique accorde des autorisations à toutes les actions CloudFront. 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.
{
"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"
]
}]
}
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, consultez Actions, ressources et clés de condition pour les services AWS et choisissez le service pour afficher 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, 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.
- Un utilisateur ou un rôle essaie d’effectuer une action AWS et la 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 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 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 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 { }. 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 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:::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) :
{
"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 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:::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) :
{
"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
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 la 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émentEffect
est pris en compte. Les autres sont ignorés. -
Plusieurs éléments
Action
: tous les élémentsAction
sont combinés en interne et traités comme s’il s’agissait d’une seule liste. -
Plusieurs éléments
Resource
: tous les élémentsResource
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 é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:::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) :
{
"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 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}"
}
}