Conecte-se ao Redshift com sessões de perfil do IAM aprimoradas com identidade - Amazon Redshift

O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a publicação de blog .

Conecte-se ao Redshift com sessões de perfil do IAM aprimoradas com identidade

É possível usar o Centro de Identidade do IAM para oferecer acesso federado a clusters e grupos de trabalho sem servidor do Amazon Redshift. Essa abordagem permite que os usuários se autentiquem usando suas credenciais do Centro de Identidade.

O Amazon Redshift oferece operações de API GetIdentityCenterAuthToken para gerar tokens autorizados que contêm informações de identidade do usuário. Essas APIs estão disponíveis para clusters provisionados e grupos de trabalho sem servidor. Os tokens permitem acesso por autenticação única contínuo aos bancos de dados do Amazon Redshift usando a configuração do Centro de Identidade.

Pré-requisitos

Antes de usar autenticação do Centro de Identidade com o Amazon Redshift, verifique se você tem o seguinte:

  • Configuração do Centro de Identidade: sua conta deve ter o Centro de Identidade do IAM configurado com identidades de usuário e atribuições de aplicações apropriadas. Para ver instruções de configuração, consulte Configurar o Centro de Identidade do IAM.

    Importante

    Se quiser se conectar ao Redshift, você deve usar o escopo redshift:connect.

  • Credenciais com identidade aprimorada: sua aplicação deve usar credenciais aprimoradas com identidade que contêm informações de identidade de usuário incorporadas. Para ter mais informações, consulte Usar sessões de perfil do IAM aprimoradas com identidade.

  • Permissões do IAM: seu usuário ou perfil do IAM deve ter permissões para chamar a API GetIdentityCenterAuthToken e acessar os clusters ou grupos de trabalho especificados. Permissões obrigatórias:

    • Para clusters provisionados: redshift:GetIdentityCenterAuthToken em ARNs de cluster (formato: arn:aws:redshift:region:account:cluster:cluster-name).

    • Para grupos de trabalho sem servidor: redshift-serverless:GetIdentityCenterAuthToken em ARNs de grupos de trabalho (formato: arn:aws:redshift-serverless:region:account:workgroup/workgroup-name).

  • Drivers compatíveis: use drivers JDBC ou ODBC do Amazon Redshift que aceitem tokens autorizados do Centro de Identidade:

Como funciona a autenticação do Centro de Identidade

A autenticação do Centro de Identidade para o Amazon Redshift usa o seguinte fluxo de trabalho:

  1. A aplicação chama a API GetIdentityCenterAuthToken usando credenciais com identidade aprimorada que contêm informações de identidade do usuário incorporadas.

  2. O Amazon Redshift valida a identidade do Centro de Identidade e gera um token autorizado criptografado com escopo para clusters ou grupos de trabalho específicos. Consulte exemplos de política do IAM.

  3. A aplicação usa esse token para se conectar ao cluster ou grupo de trabalho especificado do Amazon Redshift.

  4. O plano de dados do Amazon Redshift valida o token e concede acesso com base nas permissões do usuário do Centro de Identidade dentro da aplicação do Centro de Identidade.

Importante

Essa API exige credenciais aprimoradas com identidade. Para ter mais informações, consulte Usar sessões de perfil do IAM aprimoradas com identidade.

Se você chamar a API sem credenciais aprimoradas com identidade, receberá o erro UnsupportedOperationFault.

Operações de API GetIdentityCenterAuthToken

O Amazon Redshift oferece duas operações de API GetIdentityCenterAuthToken distintas: uma para clusters provisionados e outra para grupos de trabalho sem servidor. Ambas as operações têm o mesmo nome, mas aceitam parâmetros diferentes, dependendo do tipo de recurso de destino.

GetIdentityCenterAuthToken para clusters provisionados

Para clusters provisionados do Amazon Redshift, use a API GetIdentityCenterAuthToken no serviço Amazon Redshift para gerar um token autorizado.

Sintaxe da solicitação

{ "ClusterIds": [ "string" ] }

Parâmetros de solicitação

ClusterIds

Uma lista de identificadores de clusters do Amazon Redshift que o token terá autorização para acessar. O token só pode ser usado para autenticação nos clusters especificados nessa lista.

Tipo: matriz de strings

Restrições de tamanho: no mínimo 1 item. Máximo de 20 itens.

Obrigatório: Sim

Exemplos de CLI

Exemplo: obter token autorizado para um único cluster

aws redshift get-identity-center-auth-token \ --cluster-ids my-redshift-cluster

Exemplo: obter token autorizado para um vários clusters

aws redshift get-identity-center-auth-token \ --cluster-ids my-cluster-1 my-cluster-2

GetIdentityCenterAuthToken para grupos de trabalho sem servidor

Para grupos de trabalho do Amazon Redshift sem servidor, use a API GetIdentityCenterAuthToken no serviço Amazon Redshift sem servidor para gerar um token autorizado.

Sintaxe da solicitação

{ "WorkgroupNames": [ "string" ] }

Parâmetros de solicitação

WorkgroupNames

Uma lista de nomes de grupo de trabalho do Amazon Redshift sem servidor que o token tem autorização para acessar. O token só pode ser usado para autenticação nos grupos de trabalho especificados nessa lista.

Tipo: matriz de strings

Restrições de tamanho: no mínimo 1 item. Máximo de 20 itens.

Obrigatório: Sim

Exemplos de CLI

Exemplo: obter token autorizado para um único grupo de trabalho

aws redshift-serverless get-identity-center-auth-token \ --workgroup-names my-workgroup

Exemplo: obter token autorizado para vários grupos de trabalho

aws redshift-serverless get-identity-center-auth-token \ --workgroup-names workgroup-1 workgroup-2

Sintaxe da resposta

Ambas as APIs exibem a mesma estrutura de resposta:

{ "AuthorizedToken": "string", "ExpirationTime": "timestamp" }

Parâmetros de resposta

AuthorizedToken

Um token autorizado criptografado que contém as informações de identidade do usuário e a lista de clusters ou grupos de trabalho autorizados. Esse token deve ser tratado como dados sensíveis.

Tipo: string

ExpirationTime

A data e hora de expiração do token, em UTC. Os tokens são válidos por uma hora a partir do momento em que são gerados.

Tipo: Timestamp

Exemplo de resposta

{ "AuthorizedToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyQGV4YW1wbGUuY29tIiwiaWF0IjoxNjQwOTk1MjAwLCJleHAiOjE2NDA5OTg4MDAsImNsdXN0ZXJzIjpbIm15LWNsdXN0ZXIiXX0...", "ExpirationTime": "2024-01-01T12:00:00Z" }

Integração de drivers

Os drivers do Amazon Redshift permitem autenticação do Centro de Identidade por meio do uso direto de tokens:

Uso direto de tokens

Depois de chamar a API GetIdentityCenterAuthToken para obter um token, use o IdpTokenAuthPlugin com o tipo de token SUBJECT_TOKEN.

Configuração de conexão:

plugin_name = com.amazon.redshift.plugin.IdpTokenAuthPlugin token_type = SUBJECT_TOKEN token = {encrypted_token_from_api_response}

Para ter informações detalhadas sobre os plug-ins de autenticação e a configuração de drivers do Centro de Identidade, consulte Conectar-se a um cluster do Amazon Redshift.

Exemplo de código Java

Exemplo de código Java para estabelecer conexão usando a autenticação do Centro de Identidade:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; // Get token from GetIdentityCenterAuthToken API String token = "your_encrypted_token_from_api_response"; // Configure connection properties Properties props = new Properties(); props.setProperty("user", "your_username"); props.setProperty("plugin_name", "com.amazon.redshift.plugin.IdpTokenAuthPlugin"); props.setProperty("token_type", "SUBJECT_TOKEN"); props.setProperty("token", token); // Connect to Redshift String url = "jdbc:redshift://your-cluster.region.redshift.amazonaws.com:5439/your_database"; try (Connection conn = DriverManager.getConnection(url, props)) { // Use connection System.out.println("Connected successfully!"); } catch (SQLException e) { e.printStackTrace(); }

Requisitos de política do IAM

Para usar a autenticação do Centro de Identidade com o Amazon Redshift, é necessário ter permissões específicas do IAM, além das permissões padrão necessárias para estabelecer conexão com clusters e grupos de trabalho do Amazon Redshift.

Permissões de API

Para clusters provisionados, a sessão de perfil do IAM aprimorada deve ter:

  • redshift:GetIdentityCenterAuthToken nos ARNs de cluster (formato: arn:aws:redshift:region:account:cluster:cluster-name).

Para grupos de trabalho sem servidor, sua sessão de perfil do IAM aprimorada deve ter:

  • redshift-serverless:GetIdentityCenterAuthToken nos ARNs de grupo de trabalho (formato: arn:aws:redshift-serverless:region:account:workgroup/workgroup-name).

Políticas de exemplo do IAM.

Exemplo de política para clusters provisionados:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift:GetIdentityCenterAuthToken" ], "Resource": [ "arn:aws:redshift:us-east-1:123456789012:cluster:my-cluster" ] } ] }

Exemplo de política para grupos de trabalho sem servidor:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-serverless:GetIdentityCenterAuthToken" ], "Resource": [ "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/my-workgroup" ] } ] }

Exemplo de política para vários recursos:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift:GetIdentityCenterAuthToken" ], "Resource": [ "arn:aws:redshift:*:123456789012:cluster/*" ] }, { "Effect": "Allow", "Action": [ "redshift-serverless:GetIdentityCenterAuthToken" ], "Resource": [ "arn:aws:redshift-serverless:*:123456789012:workgroup/*" ] } ] }

Disponibilidade regional

A autenticação do Centro de Identidade está disponível nas seguintes regiões da AWS:

  • Regiões comerciais: todas as regiões compatíveis do Amazon Redshift.

  • AWS GovCloud: disponível na us-gov-east-1 e na us-gov-west-1.

  • Regiões da China: disponível na cn-north-1 e na cn-northwest-1.

nota

A disponibilidade de recursos pode variar durante o lançamento inicial.