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
GetIdentityCenterAuthTokene acessar os clusters ou grupos de trabalho especificados. Permissões obrigatórias:-
Para clusters provisionados:
redshift:GetIdentityCenterAuthTokenem ARNs de cluster (formato:arn:aws:redshift:region:account:cluster:cluster-name). -
Para grupos de trabalho sem servidor:
redshift-serverless:GetIdentityCenterAuthTokenem 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:
-
Drivers JDBC: consulte Instalar e configurar o driver JDBC do Amazon Redshift, versão 2.0
-
Drivers ODBC: consulte Instalar e configurar o driver ODBC do Amazon Redshift, versão 2.0
-
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:
-
A aplicação chama a API
GetIdentityCenterAuthTokenusando credenciais com identidade aprimorada que contêm informações de identidade do usuário incorporadas. -
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.
-
A aplicação usa esse token para se conectar ao cluster ou grupo de trabalho especificado do Amazon Redshift.
-
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:GetIdentityCenterAuthTokennos 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:GetIdentityCenterAuthTokennos 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.