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.
Utilisation d'une identité fédérée pour gérer l'accès d'Amazon Redshift aux ressources locales et aux tables externes Amazon Redshift Spectrum
L'utilisation de la fédération d'identité AWS avec les informations d'identification fournies par GetDatabaseCredentials
peut simplifier l'autorisation et l'accès aux données locales et aux données externes. Dans ce didacticiel, nous vous montrons comment fournir un accès aux ressources grâce à la fédération AWS d'identité, au lieu d'utiliser un rôle IAM spécifique.
Actuellement, pour permettre aux utilisateurs d'accéder aux données externes qui se trouvent dans Amazon S3, vous créez un rôle IAM avec des autorisations définies dans une politique d'autorisations. Les utilisateurs auxquels le rôle est associé peuvent ensuite accéder aux données externes. Cela fonctionne, mais si vous souhaitez fournir des règles détaillées, par exemple rendre certaines colonnes indisponibles pour un utilisateur en particulier, vous devrez peut-être effectuer une configuration supplémentaire sur le schéma externe.
La fédération d'identité, à l'aide des informations d'identification fournies parGetDatabaseCredentials
, peut fournir un accès aux ressources Redshift Spectrum AWS Glue et leur fournir des règles IAM détaillées qui sont plus faciles à spécifier et à modifier. Cela facilite l'application d'un accès conforme à vos règles commerciales.
Les avantages de l'utilisation d'informations d'identification fédérées sont les suivants :
-
Vous ne devez pas gérer les rôles IAM attachés à un cluster pour Redshift Spectrum.
-
Les administrateurs de clusters peuvent créer un schéma externe accessible aux utilisateurs dans différents contextes IAM. Cela est utile, par exemple, pour effectuer un filtrage de colonnes sur une table, où différents consommateurs interrogent le même schéma externe et obtiennent des champs différents dans les enregistrements renvoyés.
-
Vous pouvez interroger Amazon Redshift à l'aide d'un utilisateur disposant d'autorisations IAM, plutôt que d'un seul rôle.
Préparation d'une identité pour se connecter avec une identité fédérée
Avant de vous connecter avec une identité fédérée, vous devez effectuer plusieurs étapes préliminaires. Ces instructions supposent que vous disposez d’un schéma externe Redshift Spectrum existant qui fait référence à un fichier de données stocké dans un compartiment Amazon S3, et que le compartiment se trouve sur le même compte que votre cluster Amazon Redshift ou votre entrepôt des données Amazon Redshift Serverless.
-
Créez une identité IAM. Il peut s'agir d'un utilisateur ou d'un rôle IAM. Utilisez n'importe quel nom pris en charge par IAM.
-
Attachez des stratégies d'autorisation à une identité. Spécifiez chacune des valeurs suivantes :
-
redshift:GetClusterCredentialsWithIAM
(pour un cluster provisionné Amazon Redshift) -
redshift-serverless:GetCredentials
(pour Amazon Redshift Serverless)
Vous pouvez ajouter des autorisations avec l'éditeur de stratégies à l'aide de la console IAM.
L'identité IAM nécessite également des autorisations pour accéder aux données externes. Accordez l'accès à Amazon S3 en ajoutant directement les politiques AWS gérées suivantes :
-
AmazonS3ReadOnlyAccess
-
AWSGlueConsoleFullAccess
La dernière stratégie gérée est requise si vous utilisez AWS Glue pour préparer vos données externes. Pour plus d'informations sur les étapes à suivre pour accorder l'accès à Amazon Redshift Spectrum, consultez Créer un rôle IAM pour Amazon Redshift, qui fait partie du guide de démarrage pour Amazon Redshift et Redshift Spectrum. Il montre les étapes à suivre pour ajouter des politiques IAM afin d'accéder à Redshift Spectrum.
-
-
Configurez votre client SQL pour une connexion à Amazon Redshift. Utilisez le pilote JDBC Amazon Redshift et ajoutez les informations d'identification de votre utilisateur aux propriétés des informations d'identification de l'outil. Vous pouvez notamment utiliser le client SQL Workbench/J. Définissez les propriétés étendues de connexion client suivantes :
-
AccessKeyID — L'identifiant de votre clé d'accès.
-
SecretAccessKey— Votre clé d'accès secrète. (Notez le risque de sécurité lié à la transmission de la clé secrète si vous n'utilisez pas le chiffrement.)
-
SessionToken— Ensemble d'informations d'identification temporaires pour un rôle IAM.
-
GroupFederation – Définissez sur
true
si vous configurez une identité fédérée pour un cluster provisionné. Ne définissez pas ce paramètre si vous utilisez Amazon Redshift Serverless. -
LogLevel— Valeur entière au niveau du journal. Ce nom est facultatif.
-
-
Définissez l'URL du point de terminaison JDBC trouvé dans la console Amazon Redshift ou Amazon Redshift Serverless. Remplacez votre schéma d'URL par jdbc:redshift:iam: et utilisez cette mise en forme :
-
Format d'un cluster provisionné Amazon Redshift :
jdbc:redshift:iam://<cluster_id>.<unique_suffix>.<region>.redshift.amazonaws.com:<port>/<database_name>
Exemple :
jdbc:redshift:iam://test1.12345abcdefg.us-east-1.redshift.amazonaws.com:5439/dev
-
Pour Amazon Redshift sans serveur :
jdbc:redshift:iam://<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com:5439:<port>/<database_name>
Exemple :
jdbc:redshift:iam://default.123456789012.us-east-1.redshift-serverless.amazonaws.com:5439/dev
Une fois que vous vous êtes connecté à la base de données pour la première fois à l'aide d'une identité IAM, Amazon Redshift crée automatiquement une identité Amazon Redshift portant le même nom, préfixée par
IAM:
pour un utilisateur ou parIAMR:
pour un rôle IAM. Les étapes restantes de cette rubrique présentent des exemples pour un utilisateur.Si un utilisateur Redshift n'est pas créé automatiquement, vous pouvez en créer un en exécutant une instruction
CREATE USER
, en utilisant un compte administrateur, en spécifiant le nom d'utilisateur au formatIAM:<user name>
. -
-
En tant qu'administrateur de votre cluster Amazon Redshift, accordez à l'utilisateur Redshift les autorisations requises pour accéder au schéma externe.
GRANT ALL ON SCHEMA my_schema to "IAM:my_user";
Pour permettre à votre utilisateur Redshift de créer des tables dans le schéma externe, il doit être propriétaire du schéma. Par exemple :
ALTER SCHEMA my_schema owner to "IAM:my_user";
-
Pour vérifier la configuration, exécutez une requête en tant qu'utilisateur, à l'aide du client SQL, une fois les autorisations accordées. Cet exemple de requête extrait des données d'une table externe.
SELECT * FROM my_schema.my_table;
Commencer à propager les identités et les autorisations vers Redshift Spectrum
Pour transmettre une identité fédérée à des tables externes d'interrogation, vous devez définir SESSION
comme valeur pour le paramètre de requête IAM_ROLE
de CREATE EXTERNAL SCHEMA
. Les étapes suivantes montrent comment configurer et utiliser SESSION
pour autoriser des requêtes sur le schéma externe.
-
Créez des tables locales et des tables externes. Tables externes cataloguées avec une tâche AWS Glue à cet effet.
-
Connectez-vous à Amazon Redshift à l'aide de votre identité IAM. Comme indiqué dans la section précédente, lorsque l'identité se connecte à Amazon Redshift, un utilisateur de base de données Redshift est créé. L'utilisateur est créé s'il n'existait pas auparavant. Si l'utilisateur est nouveau, l'administrateur doit lui accorder les autorisations nécessaires pour effectuer des tâches dans Amazon Redshift, telles que l'interrogation et la création de tables.
-
Connectez-vous à Redshift à l'aide de votre compte administrateur. Exécutez la commande pour créer un schéma externe à l'aide de la valeur
SESSION
.create external schema spectrum_schema from data catalog database '<my_external_database>' region '<my_region>' iam_role 'SESSION' catalog_id '<my_catalog_id>';
Notez que
catalog_id
est défini dans ce cas. Il s'agit d'un nouveau paramètre ajouté à la fonctionnalité, carSESSION
remplace un rôle spécifique.Dans cet exemple, les valeurs de la requête imitent l'apparence des valeurs réelles.
create external schema spectrum_schema from data catalog database 'spectrum_db' region 'us-east-1' iam_role 'SESSION' catalog_id '123456789012'
Dans ce cas,
catalog_id
la valeur est votre numéro de AWS compte. -
Exécutez des requêtes pour accéder à vos données externes, en utilisant l'identité IAM à laquelle vous vous êtes connecté à l'étape 2. Par exemple :
select * from spectrum_schema.table1;
Dans ce cas,
table1
peut être, par exemple, de données au format JSON dans un fichier, dans un compartiment Amazon S3. -
Si vous disposez déjà d'un schéma externe qui utilise un rôle IAM attaché à un cluster, pointant vers votre base de données ou votre schéma externe, vous pouvez soit remplacer le schéma existant et utiliser une identité fédérée comme indiqué dans ces étapes, soit en créer un nouveau.
SESSION
indique que les informations d'identification fédérées sont utilisées pour interroger le schéma externe. Lorsque vous utilisez le paramètre de requête SESSION
, assurez-vous de définir le catalog_id
. Elle est obligatoire car elle pointe vers le catalogue de données utilisé pour le schéma. Précédemment, catalog_id
a été extrait de la valeur attribuée à iam_role
. Lorsque vous configurez la propagation des identités et des autorisations de cette manière, par exemple vers Redshift Spectrum, en utilisant des informations d'identification fédérées pour interroger un schéma externe, aucune autorisation au moyen d'un rôle IAM n'est requise.
Notes d’utilisation
Voici une erreur de connexion courante : Erreur IAM lors de la récupération des informations d'identification temporaires : impossible d'annuler la réponse d'exception à l'aide des filtres de déconnexion fournis. Cette erreur est due à l'existence d'un ancien pilote JDBC. La version minimale du pilote requise pour l'identité fédérée est 2.1.0.9. Vous pouvez obtenir le pilote JDBC en cliquant sur Télécharger le pilote JDBC Amazon Redshift, version 2.1.
Ressources supplémentaires
Ces liens fournissent des informations supplémentaires pour gérer l'accès aux données externes.
-
Vous pouvez toujours accéder aux données Redshift Spectrum à l'aide d'un rôle IAM. Pour de plus amples informations, veuillez consulter Autoriser Amazon Redshift à AWS accéder aux services en votre nom.
-
Lorsque vous gérez l'accès à des tables externes avec AWS Lake Formation, vous pouvez les interroger à l'aide de Redshift Spectrum avec des identités IAM fédérées. Vous ne devez plus gérer les rôles IAM attachés à un cluster pour que Redshift Spectrum interroge les données enregistrées avec AWS Lake Formation. Pour en savoir plus, consultez Utilisation d' AWS Lake Formation avec Amazon Redshift Spectrum.