Passer au contenu principal
Ce guide fournit les étapes nécessaires à la configuration de l’intégration de Kameleoon avec Amazon Redshift. La configuration est requise à la fois dans l’interface utilisateur Kameleoon et dans votre compte AWS. Certaines de ces actions peuvent devoir être adaptées à votre environnement AWS spécifique. Dans tous les cas, ces étapes doivent être effectuées par l’administrateur de votre compte AWS.

Étape 1 : Créer un utilisateur et un rôle IAM AWS

Vous devez créer un utilisateur et un rôle IAM que Kameleoon utilisera pour accéder à votre cluster Redshift. Vous pouvez les créer dans la console de gestion AWS ou dans l’AWS CLI. Nous fournissons des exemples de commandes pour l’AWS CLI.

1. Créer un utilisateur IAM

Utilisez la commande suivante pour créer un utilisateur IAM dédié à Kameleoon : aws iam create-user --user-name kameleoon_user Ensuite, générez une clé d’accès pour le kameleoon_user : aws iam create-access-key --user-name kameleoon_user Veillez à conserver les champs AccessKeyId et SecretAccessKey présents dans le JSON renvoyé par cette commande, car il vous sera demandé de les fournir à Kameleoon lors de la configuration dans l’interface utilisateur Kameleoon.

2. Créer un rôle IAM

Créez un rôle que Kameleoon peut assumer, lui permettant d’interagir avec votre cluster Redshift. Utilisez la commande suivante pour créer le rôle avec une trust policy JSON inline :
aws iam create-role --role-name kameleoon_role --assume-role-policy-document '{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{account_id}:user/kameleoon_user",
                "Service": [
    				"s3.amazonaws.com",
    				"redshift.amazonaws.com",
   				"iam.amazonaws.com",
    				"redshift-serverless.amazonaws.com"
]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}'

Remplacez {account_id} par votre ID de compte AWS. Lors de l’utilisation de Redshift comme source, s3.amazonaws.com peut être omis. Lors de l’utilisation de Provisioned, redshift-serverless.amazonaws.com peut être omis.

Pour Amazon Redshift en tant que destination — accorder des droits d’accès S3 Redshift à un rôle IAM

Créez et attachez un rôle S3 pour permettre à Kameleoon d’interagir avec le bucket S3 de votre choix et de copier les données de S3 vers Redshift.
aws iam attach-role-policy \
  --role-name kameleoon_role \
  --policy-document '{
  	  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:ListBucket",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::{s3_bucket_name}/*"
    },
    {
"Effect": "Allow",
"Action": [
  "redshift:GetClusterCredentialsWithIAM",
  "redshift:GetClusterCredentials",
  "redshift:DescribeClusters"
],
"Resource": "arn:aws:redshift:{aws_region}:{account_id}:dbuser:kameleoon_user"
    }
  ]
}'
Remplacez {s3_bucket_name}, {aws_region} et {account_id} par vos données. Vous pouvez aussi utiliser les politiques existantes AmazonS3FullAccess et AmazonRedshiftFullAccess.

Étape 2 : Accorder des permissions au rôle Kameleoon

Accordez les permissions nécessaires au rôle IAM associé à Kameleoon pour permettre l’interaction avec votre base de données Redshift. Les permissions doivent être accordées au niveau de l’utilisateur SQL via des commandes SQL. L’utilisateur SQL par défaut créé pour un rôle IAM s’appelle IAMR:{role_name}, donc si le rôle que vous utilisez s’appelle kameleoon_role, vous exécuterez ces commandes pour l’utilisateur SQL IAMR:kameleoon_role.

Pour Amazon Redshift comme source

1. Accorder l’accès au schéma existant

Fournissez au rôle IAM Kameleoon l’accès au schéma et aux tables pertinents dans votre base de données Redshift. Par exemple, si vous voulez que Kameleoon ingère des données depuis votre table « users » dans le schéma schema_containing_data, exécutez les commandes SQL suivantes :
GRANT USAGE ON SCHEMA "schema_containing_data" TO "IAMR:kameleoon_role";
GRANT SELECT ON TABLE "schema_containing_data"."users" TO "IAMR:kameleoon_role";

2. Créer le schéma de configuration Kameleoon

Créez un nouveau schéma pour les configurations Kameleoon et accordez les permissions nécessaires :
CREATE SCHEMA "kameleoon_configuration";

GRANT USAGE ON SCHEMA "kameleoon_configuration" TO "IAMR:kameleoon_role";
GRANT CREATE ON SCHEMA "kameleoon_configuration" TO "IAMR:kameleoon_role"

3. Accorder les permissions DML dans le schéma de configuration Kameleoon

Accordez au rôle Kameleoon les permissions d’insérer, mettre à jour et supprimer des données dans le schéma kameleoon_configuration :
GRANT INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA "kameleoon_configuration" TO "IAMR:kameleoon_role";

4. Définir des privilèges par défaut pour les futures tables

Assurez-vous que toutes les futures tables créées dans le schéma kameleoon_configuration accordent automatiquement les permissions nécessaires au rôle Kameleoon :
ALTER DEFAULT PRIVILEGES IN SCHEMA "kameleoon_configuration" 
GRANT INSERT, UPDATE, DELETE ON TABLES TO "IAMR:kameleoon_role";

Pour Amazon Redshift comme destination

1. Créer le schéma d’événements Kameleoon

Créez un nouveau schéma pour les événements Kameleoon et accordez les permissions nécessaires :
CREATE SCHEMA "kameleoon_events";

GRANT USAGE ON SCHEMA "kameleoon_events" TO "IAMR:kameleoon_role";
GRANT CREATE ON SCHEMA "kameleoon_events" TO "IAMR:kameleoon_role";

2. Accorder les permissions DML sur le schéma d’événements Kameleoon

Accordez au rôle Kameleoon les permissions d’insérer, mettre à jour et supprimer des données dans le schéma kameleoon_events :
GRANT INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA "kameleoon_events" TO "IAMR:kameleoon_role";

3. Définir des privilèges par défaut pour les futures tables

Assurez-vous que toutes les futures tables créées dans le schéma kameleoon_events accordent automatiquement les permissions nécessaires au rôle Kameleoon :
ALTER DEFAULT PRIVILEGES IN SCHEMA "kameleoon_events" 
GRANT INSERT, UPDATE, DELETE ON TABLES TO "IAMR:kameleoon_role";

Étape 3 : Activer et configurer l’intégration dans l’interface utilisateur Kameleoon

Accédez à la page Integrations dans votre compte Kameleoon et trouvez Amazon Redshift dans la liste.
Cliquez sur Install the tool et renseignez les champs suivants pour fournir à Kameleoon les identifiants d’accès à votre cluster Redshift, après avoir d’abord sélectionné le projet sur lequel vous souhaitez configurer cet accès dans la liste qui apparaît à gauche.
Les champs requis sont :
  • AWS Account ID : l’identifiant numérique unique de votre compte Amazon Web Services
  • AWS Role name : le nom du rôle AWS IAM que vous avez créé pour Kameleoon selon les instructions des sections précédentes
  • AWS Access key ID et Secret access key ID : ces deux champs sont fournis lors de la création des identifiants pour le rôle AWS. Si vous avez utilisé l’interface en ligne de commande AWS pour créer cette clé comme décrit à l’étape 1 de cet article, ces deux valeurs ont été fournies dans la réponse JSON à cette commande
Cliquez sur Confirm. Vos identifiants ont été téléchargés pour le projet. Ci-dessous, il y a une vignette ADVANCED SETUP contenant les adresses IP que Kameleoon utilisera pour se connecter à votre warehouse. De nombreuses organisations filtrent les adresses IP autorisées à se connecter à leur warehouse. Si c’est le cas, vous pouvez autoriser ces IPs depuis votre compte AWS en suivant ces étapes.

Étape 4 : Configurer le groupe de sécurité pour Redshift

Pour permettre à Kameleoon de se connecter à votre cluster Redshift, autorisez les requêtes provenant des adresses IP de Kameleoon dans votre groupe de sécurité. Cela peut être fait dans la console AWS :
  1. Identifier le groupe de sécurité : le groupe de sécurité associé à votre cluster Redshift peut être vu dans le dashboard Redshift, et vous pouvez accéder à la page de configuration de ce groupe de sécurité à partir de là. Si vous utilisez Redshift Serverless, vous recherchez le Security Group de votre Workgroup.
  2. Ajouter des règles entrantes
    • Accédez à l’onglet Inbound Rules.
    • Cliquez sur Edit inbound rules > Add rule.
    • Définissez les paramètres suivants :
      • Type : Custom TCP rule
      • Port range : 5439 (port Redshift par défaut)
      • Source : Custom (ajoutez les adresses IP Kameleoon affichées dans la section d’intégration Redshift de l’interface utilisateur Kameleoon)

Étape 5 : Ouvrir le VPC du Workgroup aux connexions externes

Assurez-vous que le VPC associé à votre cluster Redshift est configuré pour autoriser les connexions externes. Vous pouvez, pour des raisons de simplicité, rendre le VPC accessible publiquement et vous fier uniquement aux paramètres du Security Group. Une approche plus sécurisée consiste à affiner la liste de contrôle d’accès réseau de votre sous-réseau VPC. Pour ce faire, modifiez les paramètres du VPC dans votre console AWS comme suit :
  1. Accéder aux paramètres VPC : Accédez au dashboard VPC dans la console de gestion AWS.
  2. Modifier les ACL réseau :
    • Accédez à la section Network ACLs.
    • Localisez l’ACL associée à votre VPC.
    • Modifiez les règles entrantes et sortantes pour autoriser le trafic provenant des adresses IP de Kameleoon sur le port 5439.
  3. Mettre à jour les tables de routage : Assurez-vous que les tables de routage associées à votre VPC sont correctement configurées pour acheminer le trafic vers votre cluster Redshift.