Table des matières
Dans ce guide étape par étape, nous allons apprendre à configurer l’authentification SSO avec Redshift et AWS IAM Identity Center afin d’améliorer la sécurité et de faciliter l’accès des utilisateurs.
Sources Utilisées:
- https://aws.amazon.com/blogs/big-data/federated-authentication-to-amazon-redshift-using-aws-single-sign-on/
- https://aws.amazon.com/blogs/big-data/amazon-redshift-identity-federation-with-multi-factor-authentication/
Dictionnaire des Termes:
Terme | Signification |
---|---|
Compte Identity Center | Le compte où l’IAM Identity Center est configuré. |
Compte Redshift | Le compte enfant du compte Identity Center qui contient le cluster Redshift auquel nous voulons nous connecter. |
IDP | Fournisseur d’Identité |
Qu’est-ce que Redshift?
AWS Redshift est un service d’entrepôt de données entièrement géré fourni par Amazon Web Services (AWS).
Il est conçu pour gérer des charges de travail d’analyse de données à grande échelle et permet aux organisations d’analyser de vastes quantités de données rapidement et de manière rentable.
Qu’est-ce que IAM Identity Center?
IAM Identity Center fournit un endroit où vous pouvez créer ou connecter des utilisateurs de la main-d’œuvre et gérer centralement leur accès à tous leurs comptes et applications AWS.
Vous pouvez utiliser des autorisations multi-comptes pour attribuer à vos utilisateurs de la main-d’œuvre l’accès aux comptes AWS.
Pourquoi SSO?
SSO réduit le nombre de surfaces d’attaque parce que les utilisateurs ne se connectent qu’une fois par jour et n’utilisent qu’un seul ensemble d’identifiants.
Réduire la connexion à un seul ensemble d’identifiants améliore la sécurité de l’entreprise.
Lorsque les employés doivent utiliser des mots de passe distincts pour chaque application, ils ne le font généralement pas.
Prérequis
- IAM Identity Center préconfiguré → Commencer – AWS IAM Identity Center.
- Cluster Redshift préconfiguré avec un accès administratif.
- Utilisateur et mot de passe de la source d’identité (Okta, PingOne, etc.).
- JetBrains DataGrip installé (peut être en version gratuite).
Étape par Étape:
Configurer l’application Identity Center
Notre première étape sera de créer une nouvelle application AWS Identity Center dans le compte Identity Center pour être utilisée comme canal principal entre les utilisateurs et le cluster Redshift.
- Dans le panneau latéral IAM Identity Center, cliquez sur “Applications”.
- Dans le coin supérieur droit, cliquez sur “Ajouter une application”.
- Cochez “ajouter une application SAML 2.0 personnalisée” et cliquez sur “Suivant”.
- Définissez un nom d’affichage approprié, nous appellerons notre application “Redshift-ReadOnly”, car cette application sera utilisée pour obtenir un accès en lecture seule aux données du cluster.
- Téléchargez le fichier de métadonnées SAML Identity Center, nous l’utiliserons plus tard pour configurer notre application de compte Redshift.
- Copiez l’URL de connexion de l’application URL car nous en aurons besoin plus tard.
- Ensuite, nous configurerons le SAML application ACS (aka Assertion Consumer Service).
En bref, ACS est l’emplacement où la réponse de l’application SAML sera envoyée.
Comme nous utiliserons le AWS Redshift JDBC driver pour nous connecter à notre cluster Redshift, nous devrons définir l’ACS de l’application àhttp://localhost:7890/redshift/
– car le driver JDBC démarre un serveur écoutant sur le port 7890 par défaut. - Afin de restreindre l’assertion de l’application SAML uniquement à Redshift, nous configurerons le champ “Audience SAML de l’application” à
urn:amazon:webservices:redshift
.
Créer un Fournisseur d’Identité
Après avoir créé notre application Redshift-ReadOnly dans le compte Identity Center, nous devons configurer un fournisseur d’identité à utiliser par l’application Redshift-ReadOnly pour se connecter au cluster Redshift du compte Redshift.
- Dans le panneau latéral du tableau de bord IAM de votre compte Redshift, cliquez sur Fournisseurs d’Identité.
- Dans le coin supérieur droit, cliquez sur “Ajouter un fournisseur”.
- Remplissez les détails pour le nouveau IDP:
- Définissez le “Nom du fournisseur” sur Redshift-ReadOnly (comme notre application précédemment configurée).
- Téléchargez le fichier de métadonnées que nous avons téléchargé lors du processus de configuration de notre application IAM Identity Center. Cliquez sur “Ajouter un fournisseur” et terminez.
- Allez à la page de description de l’IDP et copiez l’ARN de l’IDP IDP ARN, nous l’utiliserons plus tard.
Créer un Rôle IAM & une Politique
Maintenant que nous avons créé le fournisseur d’identité à utiliser par notre application IAM Identity Center, nous pouvons créer le rôle qui sera utilisé pour se connecter au cluster Redshift lui-même.
- Dans le panneau latéral du tableau de bord IAM de votre compte Redshift, cliquez sur Rôles.
- Dans le coin supérieur droit, cliquez sur “Créer un Rôle”.
- Créez une entité de confiance de type fédération SAML 2.0 et définissez les éléments suivants:
- Définissez l’IDP sur l’IDP “Redshift-ReadOnly” que nous avons créé plus tôt.
- Cochez le bouton radio “Autoriser uniquement l’accès programmatique” et définissez:
Attribut: “SAML:aud” → définissant quelle audience peut assumer ce rôle.
Valeur: “http://localhost:7890/redshift/” → Définir l’audience sur notre serveur local de driver JDBC Redshift (comme expliqué dans la première section).
Cliquez sur “Suivant”.
- Cliquez sur “Créer une politique” et un nouvel onglet s’ouvrira.
- Sélectionnez “JSON”.
- Dans le panneau de l’éditeur de politique, collez la déclaration de politique suivante et modifiez les valeurs suivantes dans le champ “Ressource” pour correspondre à la vôtre:
<region>, <account>, <clusterName>
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift:CreateClusterUser", "redshift:JoinGroup", "redshift:GetClusterCredentials", "redshift:ListSchemas", "redshift:ListTables", "redshift:ListDatabases", "redshift:ExecuteQuery", "redshift:FetchResults", "redshift:CancelQuery", "redshift:DescribeClusters", "redshift:DescribeQuery", "redshift:DescribeTable" ], "Resource": [ "arn:aws:redshift: : :cluster: ", "arn:aws:redshift: : :dbuser: /${redshift:DbUser}", "arn:aws:redshift: : :dbname: /${redshift:DbName}", "arn:aws:redshift: : :dbgroup: /bi_users_group", ] } ] } - Nommez la politique “Redshift-ReadOnly-policy” et cliquez sur “Créer une politique”.
- Revenez à l’onglet d’origine où nous avons commencé à créer notre rôle IAM
→ cliquez sur actualiser → tapez « Redshift-ReadOnly-policy » dans la barre de recherche → cochez la politique « Redshift-ReadOnly-policy » → cliquez sur « Suivant ». - Nommez le rôle « Redshift-ReadOnly-role » et cliquez sur « Créer un rôle » dans le coin inférieur droit.
- Maintenant que nous avons créé le rôle IAM, allez à sa page de description et copiez le ARN du rôle, nous l’utiliserons plus tard.
Configurer les attributs de l’application IAM Identity Center
Pour configurer notre application pour fonctionner avec Redshift, nous devons configurer certains attributs d’application qui lui indiqueront « comment se connecter » à celui-ci.
- Dans l’IAM Identity Center, allez au panneau Applications et choisissez l’application que nous avons créée précédemment.
- Attribuez les utilisateurs et les groupes auxquels vous souhaitez accorder des autorisations pour cette application → Attribuer l’accès des utilisateurs aux applications dans la console IAM Identity Center – AWS IAM Identity Center (successeur de AWS Single Sign-On).
- Cliquez sur « mappages d’attributs ».
- Définissez les attributs selon le tableau suivant et remplacez les
<role_arn>
&<idp_arn>
espaces réservés par les ARN que vous avez copiés dans les étapes précédentes :
Attribut | Valeur | Explication |
---|---|---|
Sujet (attribut par défaut) | ${user:email} | Le sujet utilisé. |
https://aws.amazon.com/SAML/Attributes/RoleSessionName | ${user:email} | Le nom de session créé contre le cluster. |
https://redshift.amazon.com/SAML/Attributes/AutoCreate | true | Configurer l’application pour créer automatiquement l’utilisateur Redshift lors de l’authentification. |
https://aws.amazon.com/SAML/Attributes/Role | Le rôle IAM et l’IDP à utiliser pour se connecter à Redshift. | |
https://redshift.amazon.com/SAML/Attributes/DbUser | ${user:email} | Le nom d’utilisateur de la base de données à créer. |
https://redshift.amazon.com/SAML/Attributes/DbGroups | readonly | Le groupe de base de données auquel attribuer le nouvel utilisateur créé. |
Cliquez sur « Enregistrer les modifications ».
Créer un groupe Redshift & Accorder des autorisations
À ce stade, nous allons configurer le readonly
groupe Redshift (tel que défini dans les attributs de l’application à l’étape précédente) auquel chaque utilisateur sera attribué lors de la connexion via l’application.
- Connectez-vous à votre cluster Redshift avec un utilisateur privilégié (superutilisateur).
- Exécutez le script SQL suivant pour créer le groupe
readonly
et lui attribuer desread
autorisations sur le schéma public (le schéma par défaut).
create group readonly; grant usage on schema public to group readonly; grant select on all tables in schema public to group readonly;
Configurer la source de données du client DataGrip
Nous sommes tous prêts et enfin sur le point de récolter nos fruits!
Dans cette étape, nous allons configurer une source de données DataGrip qui sera utilisée comme connexion entre nous et le cluster Redshift.
- Ouvrez DataGrip et créez une nouvelle source de données Redshift.
- Un assistant de source de données s’ouvrira pour que vous puissiez configurer la connexion, définissez les attributs suivants :
- Nom : Redshift ReadOnly SSO.
- Hôte : votre point de terminaison du serveur Redshift.
- Utilisateur : votre email identifiant (sera utilisé comme utilisateur DB Redshift).
- Mot de passe : le mot de passe que vous avez configuré dans votre source d’identité (Okta, PingOne, etc.)
- Base de données : la base de données à laquelle vous souhaitez vous connecter.
- URL : l’url sera principalement configurée à ce stade (en raison du remplissage automatique de DataGrip), tout ce qu’il vous reste à faire est de changer le préfixe de l’url JDBC de
jdbc:redshift://
àjdbc:redshift:iam://
.
- Allez à l’onglet
Advanced
et configurez ces 3 attributs :- nom_du_plugin :
com.amazon.redshift.plugin.BrowserSamlCredentialsProvider
– déjà défini, donc modifiez-le. - idp_reponse_timeout : 60 – créez une nouvelle valeur.
- url_de_connexion : <votre url de connexion SAML d’application précédemment copiée> – créez une nouvelle valeur.
- nom_du_plugin :
- En bas de l’assistant de configuration de la source de données, cliquez sur « tester la connexion ».
Une fois cliqué, votre navigateur s’ouvrira et affichera l’écran suivant :
Si tout est correctement configuré, vous devriez voir la fenêtre contextuelle suivante dans DataGrip :
Cliquez sur OK.
C’est tout! Merci de votre lecture 🙂
Vous êtes à la recherche d'un nouveau contenu ?
Recevez des articles et des informations dans notre lettre d'information hebdomadaire.
En saisissant votre email, vous acceptez de recevoir les emails d’Elementor, y compris les emails marketing,
et vous acceptez nos conditions générales et notre politique de confidentialité.