

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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 Redshift
<a name="data-api-access"></a>

Pour accéder à l’API de données, un utilisateur doit recevoir une autorisation. Vous pouvez autoriser un utilisateur à accéder à l’API de données en ajoutant une politique gérée, qui est une politique Gestion des identités et des accès AWS (IAM) prédéfinie, à l’utilisateur concerné. Il est recommandé d’associer des politiques d’autorisation à un rôle IAM, puis de l’attribuer à des utilisateurs et à des groupes, le cas échéant. Pour plus d’informations, consultez [Identity and Access Management dans Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html). Pour connaître les autorisations autorisées et refusées par les politiques gérées, consultez la console IAM ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)). 

# Configuration des autorisations IAM
<a name="data-api-iam"></a>

Amazon Redshift fournit la politique gérée par `AmazonRedshiftDataFullAccess`. Cette politique fournit un accès complet aux fonctions de l’API de données Amazon Redshift. Cette politique permet également un accès limité à des opérations spécifiques d'Amazon Redshift AWS Secrets Manager et d'API IAM nécessaires pour authentifier et accéder à un cluster Amazon Redshift ou à un groupe de travail Redshift Serverless. 

Vous pouvez également créer votre propre politique IAM qui autorise l’accès à des ressources spécifiques. Pour créer votre politique, utilisez la politique `AmazonRedshiftDataFullAccess` comme modèle de départ. Une fois votre politique créée, ajoutez-la à chaque utilisateur ayant besoin d’accéder à l’API de données.

Prenez les exigences suivantes de la politique IAM associée à l’utilisateur :
+ Si vous utilisez cette AWS Secrets Manager option pour vous authentifier, vérifiez que la politique autorise l'utilisation de l'`secretsmanager:GetSecretValue`action pour récupérer le secret associé à la clé`RedshiftDataFullAccess`.
+ Si vous utilisez des informations d’identification temporaires pour vous authentifier auprès d’un cluster, confirmez que la politique autorise l’utilisation de l’action `redshift:GetClusterCredentials` pour le nom d’utilisateur de la base de données `redshift_data_api_user` pour toute base de données du cluster. Ce nom d’utilisateur doit déjà avoir été créé dans votre base de données.
+ Si vous utilisez des informations d’identification temporaires pour vous authentifier auprès d’un groupe de travail sans serveur, confirmez que la politique autorise l’utilisation de l’action `redshift-serverless:GetCredentials` pour récupérer le groupe de travail identifié avec la clé `RedshiftDataFullAccess`. L'utilisateur de la base de données est mappé 1:1 à l'identité source Gestion des identités et des accès AWS (IAM). Par exemple, l’utilisateur sample\$1user est mappé à l’utilisateur de la base de données `IAM:sample_user`, et le rôle IAM sample\$1role est mappé à `IAMR:sample_role`. Pour plus d’informations sur les identités IAM, consultez [Identités IAM (utilisateurs, groupes d’utilisateurs et rôles)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) dans le Guide de l’utilisateur IAM.
+ L’action IAM `redshift-data:GetStatementResult` permet d’accéder à la fois aux opérations d’API `GetStatementResult` et `GetStatementResultV2`.

Les liens suivants fournissent des informations supplémentaires sur Gestion des identités et des accès AWS le *guide de l'utilisateur IAM*.
+ Pour plus d’informations sur la création de rôles IAM, consultez [Création de rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html). 
+ Pour plus d’informations sur la création de politiques IAM, consultez [Création de politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html).
+ Pour en savoir plus sur l’ajout d’une politique IAM à un utilisateur, consultez [Ajout et suppression d’autorisations basées sur l’identité IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html). 

## Exécution d’une requête sur un cluster appartenant un autre compte
<a name="data-api-run-query-on-others-cluster"></a>

Pour exécuter une requête sur un cluster appartenant à un autre compte, le compte propriétaire doit fournir un rôle IAM que l’API de données peut assumer dans le compte appelant. Par exemple, supposons que le compte B possède un cluster auquel le compte A doit accéder. Le compte B peut associer la politique AWS gérée `AmazonRedshiftDataFullAccess` au rôle IAM du compte B. Ensuite, le compte B approuve le compte A à l’aide d’une politique de confiance telle que la suivante : ``

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/someRoleA"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

Enfin, le rôle IAM du compte A doit être en mesure d’assumer le rôle IAM du compte B.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111122223333:role/someRoleB"
    }
}
```

------

## Spécifiez un rôle IAM qui limite les ressources aux groupes de travail Redshift Serverless et aux clusters Amazon Redshift dans un Compte AWS
<a name="data-api-restrict-to-account"></a>

Vous pouvez spécifier une ressource ARNs dans votre politique basée sur l'identité pour contrôler l'accès aux groupes de travail Redshift Serverless et aux clusters Amazon Redshift dans un. Compte AWS Cet exemple montre comment créer une politique qui autorise l’accès à l’API de données uniquement pour le groupe de travail et les clusters spécifiés Compte AWS.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:CancelStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListStatements"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "redshift-data:*",
            "Resource": [
                "arn:aws:redshift:us-east-1:111122223333:workgroup/*",
                "arn:aws:redshift:us-east-1:111122223333:cluster:*"
            ]
        }
    ]
}
```

------

## Configurer une politique IAM qui restreint l’accès aux informations des instructions SQL au seul propriétaire de l’instruction
<a name="data-api-restrict-to-statement-owner"></a>

Par défaut, l’API de données Amazon Redshift considère le rôle IAM utilisé lors de l’appel `ExecuteStatement` et `BatchExecuteStatement` comme le propriétaire de l’instruction SQL. Toute personne autorisée à assumer ce rôle peut accéder aux informations relatives à l’instruction SQL, notamment à ses résultats. Pour restreindre l’accès aux informations des instructions SQL à une session de rôle IAM avec un propriétaire particulier, ajoutez une condition `redshift-data:statement-owner-iam-userid: "${aws:userid}"`. La politique IAM suivante restreint l’accès.

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:CancelStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListStatements"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "redshift-data:statement-owner-iam-userid": "${aws:userid}"
                }
            }
        }
    ]
}
```

------

Vous pouvez utiliser la condition `statement-owner-iam-userid` avec `CancelStatement`, `DescribeStatement`, `GetStatementResult` et `ListStatements`. Pour plus d’informations, consultez [Actions définies par l’API de données Amazon Redshift](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftdataapi.html#amazonredshiftdataapi-redshift-data_statement-owner-iam-userid).

## Configurer une politique IAM qui limite l’accès aux résultats SQL au seul propriétaire de la session
<a name="data-api-restrict-session-owner"></a>

Par défaut, l’API de données Amazon Redshift considère le rôle IAM utilisé lors de l’appel `ExecuteStatement` et `BatchExecuteStatement` comme le propriétaire de la session de base de données qui exécute l’instruction SQL. Toute personne autorisée à assumer ce rôle peut soumettre des requêtes à la session de base de données. Pour restreindre l’accès à la session à une session de rôle IAM avec un propriétaire particulier, ajoutez une condition ` redshift-data:session-owner-iam-userid: "${aws:userid}"`. La politique IAM suivante restreint l’accès.

La politique IAM suivante permet uniquement au propriétaire de la session d’obtenir les résultats des instructions. La condition `session-owner-iam-userid` est utilisée pour limiter l’accès aux ressources au `userid` spécifié.

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [ 
                "redshift-data:ExecuteStatement",
                "redshift-data:BatchExecuteStatement"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "redshift-data:session-owner-iam-userid": "${aws:userid}"
                }
            }
        }
    ]
}
```

------

Vous pouvez utiliser la condition `session-owner-iam-userid` avec `ExecuteStatement` et `BatchExecuteStatement`. Pour plus d’informations, consultez [Actions définies par l’API de données Amazon Redshift](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftdataapi.html#amazonredshiftdataapi-redshift-data_statement-owner-iam-userid).

# Stockage des identifiants de base de données dans AWS Secrets Manager
<a name="data-api-secrets"></a>

Lorsque vous appelez l’API de données, vous pouvez utiliser un secret dans AWS Secrets Manager pour transmettre les informations d’identification du cluster ou du groupe de travail sans serveur. Pour ce faire, vous devez spécifier le nom du secret ou son ARN (Amazon Resource Name). 

Pour stocker des informations d’identification avec Secrets Manager, vous devez disposer d’une autorisation de politique gérée par `SecretManagerReadWrite`. Pour plus d'informations sur les autorisations minimales, consultez la section [Création et gestion de AWS secrets avec Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html) dans le *guide de AWS Secrets Manager l'utilisateur*. 

**Pour sauvegarder vos informations d'identification dans un secret pour un cluster Amazon Redshift**

1. Utilisez la AWS Secrets Manager console pour créer un secret contenant les informations d'identification de votre cluster :
   + Lorsque vous choisissez **Store a new secret (Sauvegarder un nouveau secret)**, sélectionnez **Credentials for Redshift cluster (Informations d'identification du cluster Redshift)**. 
   + Sauvegardez les valeurs **User name (Nom d’utilisateur)** (utilisateur de la base de données), **Password (Mot de passe)** et **DB cluster (Cluster de base de données)** (identifiant du cluster) dans votre secret. 
   + Étiquetez le secret avec la clé `RedshiftDataFullAccess`. La politique AWS gérée `AmazonRedshiftDataFullAccess` n'autorise l'action que `secretsmanager:GetSecretValue` pour les secrets marqués par la clé`RedshiftDataFullAccess`. 

   Pour obtenir des instructions, consultez [Création d’un secret basique](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) dans le *Guide de l’utilisateur AWS Secrets Manager *.

1. Utilisez la AWS Secrets Manager console 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 stocker vos informations d’identification dans un secret pour un groupe de travail sans serveur**

1. Utilisez AWS Secrets Manager AWS CLI des commandes pour stocker un secret contenant les informations d'identification de votre groupe de travail sans serveur :
   + Créez votre secret dans un fichier, par exemple, un fichier JSON nommé `mycreds.json`. Fournissez les valeurs du champ **User name** (Nom d’utilisateur), à savoir l’utilisateur de la base de données, et du champ **Password** (Mot de passe) dans le fichier.

     ```
     {
           "username": "myusername",
           "password": "mypassword"
     }
     ```
   + Stockez vos valeurs dans votre secret et étiquetez le secret avec la clé `RedshiftDataFullAccess`.

     ```
     aws secretsmanager create-secret --name MyRedshiftSecret  --tags Key="RedshiftDataFullAccess",Value="serverless" --secret-string file://mycreds.json
     ```

     Le résultat est présenté ci-dessous :

     ```
     {
         "ARN": "arn:aws:secretsmanager:region:accountId:secret:MyRedshiftSecret-mvLHxf",
         "Name": "MyRedshiftSecret",
         "VersionId": "a1603925-e8ea-4739-9ae9-e509eEXAMPLE"
     }
     ```

   Pour plus d’informations, consultez [Création d’un secret basique avec AWS CLI](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html#proc-create-api) dans le *Guide de l’utilisateur AWS Secrets Manager *.

1. Utilisez la AWS Secrets Manager console 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 créer un point de terminaison Amazon VPC (AWS PrivateLink) pour l’API de données
<a name="data-api-vpc-endpoint"></a>

Amazon Virtual Private Cloud (Amazon VPC) vous permet de lancer AWS des ressources, telles que des clusters et des applications Amazon Redshift, dans un cloud privé virtuel (VPC). AWS PrivateLink fournit une connectivité privée entre les clouds privés virtuels (VPCs) et les AWS services en toute sécurité sur le réseau Amazon. À l'aide de AWS PrivateLink, vous pouvez créer des points de terminaison VPC, que vous pouvez utiliser pour vous connecter à des services via différents comptes et VPCs sur la base d'Amazon VPC. Pour plus d'informations AWS PrivateLink, consultez la section [VPC Endpoint Services (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html) dans le guide de l'*utilisateur d'Amazon Virtual Private Cloud*.

Vous pouvez appeler l’API de données avec des points de terminaison Amazon VPC. L’utilisation d’un point de terminaison Amazon VPC permet de maintenir le trafic entre les applications de votre Amazon VPC et l’API de données dans le réseau AWS , sans utiliser d’adresses IP publiques. Les points de terminaison Amazon VPC peuvent vous aider à respecter les exigences réglementaires et de conformité liées à la limitation de la connectivité Internet publique. Par exemple, si vous utilisez un point de terminaison Amazon VPC, vous pouvez conserver le trafic entre une application exécutée sur une instance Amazon EC2 et l'API de données qui VPCs les contient.

Une fois que vous avez créé le point de terminaison Amazon VPC, vous pouvez commencer à l’utiliser sans modifier le code ou la configuration de votre application.

**Pour créer un point de terminaison Amazon VPC pour l’API de données**

1. Connectez-vous à la console Amazon VPC AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Choisissez **Points de terminaison**, puis **Créer un point de terminaison**.

1. Sur la page **Créer un point de terminaison**, pour **Catégorie de services**, choisissez **Services AWS **. Pour **Service Name (Nom de service)**, choisissez **redshift-data**(`com.amazonaws.region.redshift-data`).

1. Pour **VPC**, choisissez le VPC dans lequel créer le point de terminaison.

   Choisissez le VPC contenant l’application qui effectue des appels de l’API de données.

1. Pour les **sous-réseaux**, choisissez le sous-réseau pour chaque zone de disponibilité (AZ) utilisée par le AWS service qui exécute votre application.

   Pour créer un point de terminaison Amazon VPC, spécifiez la plage d’adresses IP privées dans laquelle le point de terminaison est accessible. Pour ce faire, choisissez le sous-réseau de chaque zone de disponibilité. Cela limite le point de terminaison de VPC à la plage d’adresses IP privées spécifique à chaque zone de disponibilité et crée également un point de terminaison Amazon VPC dans chaque zone de disponibilité.

1. Pour **Enable DNS Name (Activer le nom DNS)**, sélectionnez **Activer pour ce point de terminaison**.

   Private DNS résout le nom d’hôte DNS standard de l’API de données (`https://redshift-data.region.amazonaws.com`) par les adresses IP privées associées au nom d’hôte DNS spécifique à votre point de terminaison Amazon VPC. Par conséquent, vous pouvez accéder au point de terminaison VPC de l'API de données en utilisant AWS CLI ou AWS SDKs sans apporter de modifications de code ou de configuration pour mettre à jour l'URL du point de terminaison de l'API de données.

1. Pour **Groupe de sécurité**, choisissez un groupe de sécurité à associer au point de terminaison Amazon VPC.

   Choisissez le groupe de sécurité qui autorise l'accès au AWS service qui exécute votre application. Par exemple, si une instance Amazon EC2 exécute votre application, choisissez le groupe de sécurité qui autorise l’accès à cette instance Amazon EC2. Le groupe de sécurité vous permet de contrôler le trafic vers le point de terminaison Amazon VPC à partir des ressources de votre VPC.

1. Choisissez **Créer un point de terminaison**.

Une fois le point de terminaison créé, choisissez le lien dans le AWS Management Console pour afficher les détails du point de terminaison.

L’onglet **Détails** du point de terminaison affiche les noms d’hôte DNS générés lors de la création du point de terminaison Amazon VPC.

Vous pouvez utiliser le point de terminaison standard (`redshift-data.region.amazonaws.com`) ou l’un des points de terminaison spécifiques au VPC pour appeler l’API de données dans l’Amazon VPC. Le point de terminaison standard de l’API de données effectue automatiquement un routage vers le point de terminaison Amazon VPC. Ce routage se produit car le nom d’hôte DNS privé a été activé lors de la création du point de terminaison Amazon VPC.

Lorsque vous utilisez un point de terminaison Amazon VPC dans un appel d'API de données, tout le trafic entre votre application et l'API de données reste dans l'Amazon VPCs qui les contient. Vous pouvez utiliser un point de terminaison Amazon VPC pour n’importe quel type d’appel à l’API de données. Pour plus d’informations sur l’appel de l’API de données, consultez [Considérations relatives à l’appel à l’API de données Amazon Redshift](data-api.md#data-api-calling-considerations).

# Rejoindre des groupes de base de données lors de la connexion à un cluster
<a name="data-api-dbgroups"></a>

Les groupes de base de données sont des ensembles d’utilisateurs de base de données. Des privilèges de base de données peuvent être accordés aux groupes. Un administrateur peut configurer un rôle IAM de telle sorte que ces groupes de base de données soient pris en compte lorsque votre requête SQL s’exécute avec l’API de données. Pour en savoir plus sur les groupes de base de données, consultez [Groupes](https://docs.aws.amazon.com/redshift/latest/dg/r_Groups.html) dans le *Guide du développeur de base de données Amazon Redshift*. 

Vous pouvez configurer le rôle IAM d’un appelant de l’API de données de sorte que l’utilisateur de base de données spécifié dans l’appel rejoigne des groupes de base de données au moment où l’API de données se connecte à un cluster. Cette fonctionnalité n’est prise en charge que lors de la connexion à des clusters provisionnés. Elle n’est pas pris en charge lors de la connexion à des groupes de travail Redshift sans serveur. Le rôle IAM de l’appelant de l’API de données doit également autoriser l’action `redshift:JoinGroup`.

Pour configurer cela, vous devez ajouter des balises aux rôles IAM. L’administrateur du rôle IAM de l’appelant ajoute des balises avec la clé `RedshiftDbGroups` et une clé-valeur d’une liste de groupes de base de données. La valeur est une liste de noms de groupes de base de données séparés par deux points (:) d’une longueur totale maximale de 256 caractères. Les groupes de base de données doivent être préalablement définis dans la base de données connectée. Si aucun groupe spécifié n’est trouvé dans la base de données, elle est ignorée. Par exemple, pour les groupes de base de données `accounting` et `retail`, la clé-valeur est `accounting:retail`. La paire clé-valeur de balise `{"Key":"RedshiftDbGroups","Value":"accounting:retail"}` est utilisée par l’API de données pour identifier les groupes de base de données qui sont associés à l’utilisateur de base de données indiqué dans l’appel à l’API de données.

**Pour rejoindre des groupes de base de données**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le panneau de navigation de la console, choisissez **Roles** (Rôles), puis choisissez le nom du rôle que vous souhaitez modifier.

1. Choisissez l’onglet **Balises**, puis **Gérer les balises**.

1. Choisissez **Ajouter une balise**, puis ajoutez la clé **RedshiftDbGroups**et une valeur sous forme de liste de*database-groups-colon-separated*.

1. Sélectionnez **Enregistrer les modifications**.

   Désormais, lorsqu’un principal IAM (auquel ce rôle IAM est attaché) appelle l’API de données, l’utilisateur de base de données spécifié rejoint les groupes de base de données spécifiés dans le rôle IAM.

Pour plus d’informations sur la procédure d’attachement d’une balise à un principal, y compris les rôles IAM et les utilisateurs IAM, consultez [Étiquetage des ressources IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) dans le *Guide de l’utilisateur IAM*. 