Autorisation de l’accès à l’API de données Amazon RDS - Amazon Aurora

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.

Autorisation de l’accès à l’API de données Amazon RDS

Les utilisateurs peuvent invoquer les opérations de l’API de données Amazon RDS (API de données) seulement s’ils sont autorisés à le faire. Vous pouvez autoriser un utilisateur à utiliser l'API de données en joignant une politique AWS Identity and Access Management (IAM) qui définit ses privilèges. Vous pouvez également attacher la politique à un rôle si vous utilisez les rôles IAM. Une politique AWS gérée inclut AmazonRDSDataFullAccess des autorisations pour l'API de données.

La AmazonRDSDataFullAccess politique inclut également des autorisations permettant à l'utilisateur d'obtenir la valeur d'un secret AWS Secrets Manager. Les utilisateurs doivent utiliser Secrets Manager pour stocker les secrets qu’ils peuvent utiliser dans leurs appels à l’API de données. L’utilisation de secrets signifie que les utilisateurs n’ont pas besoin d’inclure des informations d’identification de base de données pour les ressources qu’ils ciblent dans leurs appels à l’API de données. L’API de données appelle Secrets Manager de manière transparente, qui autorise (ou refuse) la demande de secret de l’utilisateur. Pour plus d’informations sur la configuration des secrets à utiliser avec l’API de données, consultez Stockage des identifiants de base de données dans AWS Secrets Manager.

La politique AmazonRDSDataFullAccess fournit un accès complet (via l’API de données) aux ressources. Vous pouvez limiter la portée en définissant vos propres politiques qui spécifient l’ARN (Amazon Resource Name) d’une ressource.

Par exemple, la politique suivante présente un exemple des autorisations minimales requises pour qu’un utilisateur puisse accéder à l’API de données pour le cluster de bases de données identifié par son ARN. La politique comprend les autorisations nécessaires pour accéder à Secrets Manager et obtenir l’autorisation sur l’instance de base de données pour l’utilisateur.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "SecretsManagerDbCredentialsAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:rds-db-credentials/*" }, { "Sid": "RDSDataServiceAccess", "Effect": "Allow", "Action": [ "rds-data:BatchExecuteStatement", "rds-data:BeginTransaction", "rds-data:CommitTransaction", "rds-data:ExecuteStatement", "rds-data:RollbackTransaction" ], "Resource": "arn:aws:rds:us-east-2:111122223333:cluster:prod" } ] }

Nous vous recommandons d’utiliser un ARN spécifique pour l’élément « Resources » dans les instructions de votre politique (comme indiqué dans l’exemple) plutôt qu’un caractère générique (*).

Utilisation de l’autorisation basée sur les balises

L’API de données RDS (API de données) et Secrets Manager prennent en charge l’autorisation basée sur les balises. Les balises sont des paires clé-valeur qui étiquettent une ressource, telle qu’un cluster RDS, avec une valeur de chaîne supplémentaire, par exemple :

  • environment:production

  • environment:development

Vous pouvez appliquer des balises à vos ressources pour la répartition des coûts, la prise en charge des opérations, le contrôle d’accès et bien d’autres raisons. (Si vous n’avez pas appliqué de balises à vos ressources et que vous souhaitez le faire, vous pouvez en savoir plus en consultant Balisage de ressources Amazon RDS.) Vous pouvez utiliser les balises de vos instructions de politique pour limiter l’accès aux clusters RDS étiquetés avec ces balises. Par exemple, un cluster de bases de données Aurora peut avoir des balises qui identifient son environnement en tant que production ou développement.

L’exemple suivant montre comment utiliser les balises dans vos instructions de politique. Cette instruction exige que le cluster et le secret transmis dans la demande d’API de données aient une balise environment:production.

Voici comment la politique est appliquée : lorsqu’un utilisateur effectue un appel via l’API de données, la demande est envoyée au service. L’API de données vérifie d’abord que l’ARN du cluster transmis dans la demande contient la balise environment:production. Elle appelle ensuite Secrets Manager pour récupérer la valeur du secret de l’utilisateur dans la requête. Secrets Manager vérifie également que le secret de l’utilisateur est étiqueté avec environment:production. Si tel est le cas, l’API de données utilise ensuite la valeur extraite en tant que mot de passe de base de données de l’utilisateur. Enfin, si cette valeur est également correcte, la demande d’API de données est appelée avec succès pour l’utilisateur.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "SecretsManagerDbCredentialsAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:rds-db-credentials/*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": [ "production" ] } } }, { "Sid": "RDSDataServiceAccess", "Effect": "Allow", "Action": [ "rds-data:*" ], "Resource": "arn:aws:rds:us-east-2:111122223333:cluster:*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": [ "production" ] } } } ] }

L’exemple montre des actions distinctes pour rds-data et secretsmanager pour l’API de données et Secrets Manager. Cependant, vous pouvez combiner des actions et définir des conditions de balise de différentes manières afin de prendre en charge vos cas d’utilisation spécifiques. Pour plus d’informations, consultez Utilisation des stratégies basées sur l’identité (stratégies IAM) pour Secrets Manager.

Dans l’élément « Condition » de la politique, vous pouvez choisir les clés de balise parmi les suivantes :

  • aws:TagKeys

  • aws:ResourceTag/${TagKey}

Pour en savoir plus sur les balises de ressources et sur leur utilisationaws:TagKeys, consultez la section Contrôle de l'accès aux AWS ressources à l'aide de balises de ressources.

Note

À la fois l'API de données et AWS Secrets Manager les utilisateurs autorisés. Si vous ne disposez pas des autorisations requises pour toutes les actions définies dans une stratégie, une erreur AccessDeniedException s’affiche.

Stockage des identifiants de base de données dans AWS Secrets Manager

Lorsque vous appelez l’API de données Amazon RDS (API de données), vous pouvez transmettre des informations d’identification pour le cluster de bases de données en utilisant un secret dans Secrets Manager. Pour ce faire, vous devez spécifier le nom du secret ou son ARN (Amazon Resource Name).

Pour stocker les informations d’identification de cluster de bases de données dans un secret
  1. Utilisez Secrets Manager pour créer un secret qui contient les informations d’identification du cluster de bases de données Aurora.

    Pour obtenir des instructions, consultez Création d’un secret de base de données dans le Guide de l’utilisateur AWS Secrets Manager .

  2. Utilisez la console Secrets Manager pour afficher les détails du secret que vous avez créé ou exécutez la aws secretsmanager describe-secret AWS CLI commande.

    Notez le nom et l’ARN du secret. Vous pouvez les utiliser dans les appels à l’API de données.

Pour plus d’informations sur l’utilisation de Secrets Manager, consultez le Guide de l’utilisateur AWS Secrets Manager.

Pour comprendre comment Amazon Aurora assure la gestion des identités et des accès, consultez Comment Amazon Aurora fonctionne avec IAM.

Pour en savoir plus sur la création d’une stratégie IAM, consultez Création de stratégies IAM dans le Guide de l’utilisateur IAM. Pour en savoir plus sur l’ajout d’une stratégie IAM, consultez Ajout et suppression de stratégies IAM dans le Guide de l’utilisateur IAM.