Azure - Amazon Redshift

Azure

Você pode usar o Microsoft Azure AD como um provedor de identidade (IdP) para acessar seu cluster do Amazon Redshift. Este tutorial mostra como usar o Azure como provedor de identidades (IdP) para acessar clusters do Amazon Redshift.

Para saber como federar o acesso do Amazon Redshift com o logon único do Microsoft Azure AD, assista ao vídeo a seguir.

Etapa 1: configurar o Azure e sua conta da AWS para que confiem um no outro

O procedimento a seguir descreve como configurar uma relação de confiança.

Para configurar o Azure AD e sua conta da AWS para que confiem um no outro
  1. Crie ou use um cluster existente do Amazon Redshift para os usuários do Azure AD se conectarem. Para configurar a conexão, certas propriedades deste cluster são necessárias, como o identificador de cluster. Para obter mais informações, consulte Criar um cluster.

  2. Configure grupos e usuários do Diretório Ativo do Azure usados para a AWS no portal do Microsoft Azure.

  3. Adicione o Amazon Redshift como uma aplicação empresarial no portal do Microsoft Azure para usar para logon único no AWS Console e logon federado no Amazon Redshift. Escolha Enterprise application (Aplicativo empresarial).

  4. Escolha +New application (+Novo aplicativo). A página Adicionar um aplicativo é exibida.

  5. Pesquise AWS no campo de pesquisa.

  6. Escolha Amazon Web Services (AWS) e escolha Adicionar. Isso cria a aplicação da AWS.

  7. Em Manage (Gerenciar), escolha Single sign-on (Logon único).

  8. Escolha SAML. O Amazon Web Services (AWS) | A página de logon baseada em SAML é exibida.

  9. Escolha Yes (Sim) para prosseguir para a página Configurar logon único com SAML. Esta página mostra a lista de atributos pré-configurados relacionados à autenticação única.

  10. Em Basic SAML Configuration (Configuração básica de SAML), escolha o ícone de edição e Save (Salvar).

  11. Quando você estiver configurando mais de um aplicativo, forneça um valor de identificador. Por exemplo, digite https://signin.aws.amazon.com/saml#2. Observe que a partir do segundo aplicativo em diante, use esse formato com um sinal # para especificar um valor SPN exclusivo.

  12. Na seção User Attributes and Claims (Atributos de usuário e reivindicações), escolha o ícone de edição.

    Por padrão, as reivindicações UID (Unique User Identifier), Role, RoleSessionName e SessionDuration são pré-configuradas.

  13. Escolha + Add new claim (+ Adicionar nova reivindicação) para adicionar uma reivindicação aos usuários do banco de dados.

    Em Nome, digite DbUser.

    Em Namespace, insira https://redshift.amazon.com/SAML/Attributes.

    Em Origem, escolha Atributo.

    Em Source attribute (Atributo de origem), escolha user.userprincipalname. Selecione Salvar.

  14. Escolha + Add new claim (+ Adicionar nova reivindicação) para adicionar uma reivindicação ao AutoCreate.

    Em Nome, digite AutoCreate.

    Em Namespace, insira https://redshift.amazon.com/SAML/Attributes.

    Em Origem, escolha Atributo.

    Em Source attribute (Atributo de origem), escolha "true". Selecione Salvar.

    Aqui, 123456789012 é a conta da AWS, AzureSSO é uma função do IAM que você criou e AzureADProvider é o provedor do IAM.

    Nome da reivindicação Valor

    Identificador de usuário exclusivo (ID de nome)

    user.userprincipalname

    https://aws.amazon.com/SAML/Attributes/SessionDuration

    "900"

    https://aws.amazon.com/SAML/Attributes/Role

    arn:aws:iam::123456789012:role/AzureSSO,arn:aws:iam::123456789012:saml-provider/AzureADProvider

    https://aws.amazon.com/SAML/Attributes/RoleSessionName

    user.userprincipalname

    https://redshift.amazon.com/SAML/Attributes/AutoCreate

    "true"

    https://redshift.amazon.com/SAML/Attributes/DbGroups

    user.assignedroles

    https://redshift.amazon.com/SAML/Attributes/DbUser

    user.userprincipalname

  15. Em Registro de aplicativo > your-application-name > Autenticação, adicione Aplicativo móvel e desktop. Especifique o URL como http://localhost/redshift/.

  16. Na seção SAML Signing Certificate (Certificado de assinatura SAML), escolha Download (Fazer download) para fazer download e salvar o arquivo XML de metadados de federação para usar ao criar um provedor de identidade SAML do IAM. Esse arquivo é usado para criar a identidade federada da autenticação única.

  17. Crie um provedor de identidade SAML do IAM no console do IAM. O documento de metadados fornecido é o arquivo XML de metadados da federação que você salvou quando configurou o Azure Enterprise Application. Para obter etapas detalhadas, consulte Criar e gerenciar um provedor de identidade do IAM (console) no Manual do usuário do IAM.

  18. Crie uma função do IAM para a federação do SAML 2.0 no console do IAM. Para obter etapas detalhadas, consulte Criar uma função para o SAML no Manual do usuário do IAM.

  19. Crie uma política do IAM que você possa anexar à função do IAM criada para a federação do SAML 2.0 no console do IAM. Para obter etapas detalhadas, consulte Criar políticas do IAM (console) no Manual do usuário do IAM.

    Modifique a seguinte política (no formato JSON) para o seu ambiente:

    • Substitua a região da AWS do seu cluster por us-west-1.

    • Substitua a conta da AWS por 123456789012.

    • Substitua seu identificador de cluster (ou * para todos os clusters) por cluster-identifier.

    • Substitua seu banco de dados (ou * para todos os bancos de dados) por dev.

    • Substitua o identificador exclusivo de sua função do IAM por AROAJ2UCCR6DPCEXAMPLE.

    • Substitua o domínio de e-mail do locatário ou da empresa por example.com.

    • Substitua o grupo de banco de dados ao qual você planeja atribuir o usuário por my_dbgroup.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": [ "arn:aws:redshift:us-west-1:123456789012:dbname:cluster-identifier/dev", "arn:aws:redshift:us-west-1:123456789012:dbuser:cluster-identifier/${redshift:DbUser}", "arn:aws:redshift:us-west-1:123456789012:cluster:cluster-identifier" ], "Condition": { "StringEquals": { "aws:userid": "AROAJ2UCCR6DPCEXAMPLE:${redshift:DbUser}@example.com" } } }, { "Effect": "Allow", "Action": "redshift:CreateClusterUser", "Resource": "arn:aws:redshift:us-west-1:123456789012:dbuser:cluster-identifier/${redshift:DbUser}" }, { "Effect": "Allow", "Action": "redshift:JoinGroup", "Resource": "arn:aws:redshift:us-west-1:123456789012:dbgroup:cluster-identifier/my_dbgroup" }, { "Effect": "Allow", "Action": [ "redshift:DescribeClusters", "iam:ListRoles" ], "Resource": "*" } ] }

    Esta política concede permissões da seguinte forma:

    • A primeira seção concede permissão à operação de API do GetClusterCredentials para obter credenciais temporárias para o cluster especificado. Neste exemplo, o recurso é cluster-identifier com banco de dados dev, na conta 123456789012 e na região da AWS us-west-1. A cláusula ${redshift:DbUser} permite que apenas os usuários que correspondam ao valor de DbUser especificado no Azure AD se conectem.

    • A cláusula de condição impõe que apenas determinados usuários obtêm credenciais temporárias. Esses são os usuários da função especificada pelo ID exclusivo de função AROAJ2UCCR6DPCEXAMPLE na conta do IAM identificada por um endereço de e-mail no domínio de e-mail da empresa. Para obter mais informações sobre IDs exclusivos, consulte IDs exclusivos no Manual do usuário do IAM.

      Sua configuração com seu IdP (neste caso, Azure AD) determina como a cláusula de condição é gravada. Se o e-mail do seu funcionário for johndoe@example.com, primeiro defina ${redshift:DbUser} para o campo super que corresponde ao nome de usuário do funcionário johndoe. Então, para fazer essa condição funcionar, defina o campo RoleSessionName do AWS SAML como o supercampo que corresponde ao e-mail do funcionário johndoe@example.com. Ao adotar essa abordagem, considere o seguinte:

      • Se você definir ${redshift:DbUser} para ser o e-mail do funcionário, em seguida, remova o @example.com no JSON do exemplo para corresponder com o RoleSessionName.

      • Se você definir o RoleSessionId para ser apenas o nome de usuário do funcionário, remova o @example.com no exemplo para corresponder ao RoleSessionName.

      • No JSON de exemplo, tanto ${redshift:DbUser} como RoleSessionName são definidos como o e-mail do funcionário. Este exemplo JSON usa o nome de usuário do banco de dados Amazon Redshift com @example.com para conectar o usuário para acessar o cluster.

    • A segunda seção concede permissão para criar um nome dbuser no cluster especificado. Neste JSON de exemplo, ele restringe a criação de ${redshift:DbUser}.

    • A terceira seção concede permissão para especificar a qual dbgroup um usuário pode ingressar. Neste JSON de exemplo, um usuário pode ingressar no grupo my_dbgroup no cluster especificado.

    • A quarta seção concede permissão para ações que o usuário pode fazer em todos os recursos. Neste JSON de exemplo, ele permite que os usuários chamem redshift:DescribeClusters para obter informações do cluster, como o endpoint do cluster, região da AWS e porta. Também permite que os usuários chamem iam:ListRoles para verificar quais funções um usuário pode assumir.

Etapa 2: configurar JDBC ou ODBC para autenticação no Azure

JDBC
Como configurar o JDBC para autenticação no Microsoft Azure AD
  • Configure seu cliente de banco de dados para se conectar ao cluster por meio do JDBC usando o logon único do Azure AD.

    Você pode usar qualquer cliente que use um driver JDBC para se conectar usando o logon único do Azure AD ou usar uma linguagem, como Java, para se conectar usando um script. Para obter informações sobre instalação e configuração, consulte Configurar uma conexão para o driver JDBC versão 2.1 para o Amazon Redshift.

    Por exemplo, você pode usar SQLWorkbench/J como o cliente. Ao configurar o SQLWorkbench/j, a URL do seu banco de dados usa o seguinte formato.

    jdbc:redshift:iam://cluster-identifier:us-west-1/dev

    Se você usar o SQLWorkbench/j como o cliente, execute as seguintes etapas:

    1. Inicie o SQL Workbench/J. Na página Selecionar perfil de conexão adicione um Grupo de perfis chamado AzureAuth.

    2. Em Connection Profile (Perfil de conexão), insira Azure.

    3. Escolha Manage Drivers (Gerenciar drivers) e escolha Amazon Redshift. Escolha o ícone Open Folder (Abrir pasta) ao lado de Library (Biblioteca), e escolha o arquivo.jar JDBC apropriado.

    4. Na página Select Connection Profile (Selecionar perfil de conexão), adicione informações ao perfil de conexão da seguinte maneira:

      • Em User (Usuário), insira seu nome de usuário do Microsoft Azure. Este é o nome de usuário da conta do Microsoft Azure que você está usando para o logon único que tem permissão para o cluster que você está tentando autenticar.

      • Em Password (Senha), digite sua senha do Microsoft Azure.

      • Em Drivers, escolha Amazon Redshift (com.amazon.redshift.jdbc.Driver).

      • Para URL, insira jdbc:redshift:iam://your-cluster-identifier:your-cluster-region/your-database-name.

    5. Escolha Extended Properties (Propriedades estendidas) para adicionar informações adicionais às propriedades de conexão, conforme descrito a seguir.

      Para a configuração de autenticação única do Azure AD, adicione outras informações da seguinte forma:

      • Para plugin_name, insira com.amazon.redshift.plugin.AzureCredentialsProvider. Esse valor especifica para o driver usar o logon único do Azure AD como o método de autenticação.

      • Para idp_tenant, insira your-idp-tenant. Usado apenas para o Microsoft Azure AD. Este é o nome do locatário da sua empresa configurado no Azure AD. Esse valor pode ser o nome do locatário ou o ID exclusivo do locatário com hífens.

      • Para client_secret, insira your-azure-redshift-application-client-secret. Usado apenas para o Microsoft Azure AD. Este é o segredo do seu cliente da aplicação Amazon Redshift que você criou ao definir a configuração do Azure Single Sign-On. Isso só é aplicável ao plug-in com.amazon.redshift.plugin.AzureCredentialsProvider.

      • Para client_id, insira your-azure-redshift-application-client-id. Usado apenas para o Microsoft Azure AD. Esta é a ID do cliente (com hifens) da aplicação Amazon Redshift que você criou ao definir sua configuração do Azure Single Sign-On.

      Para a configuração de autenticação única do Azure AD com MFA, adicione outras informações às propriedades de conexão da seguinte forma:

      • Para plugin_name, insira com.amazon.redshift.plugin.BrowserAzureCredentialsProvider. Isso especifica para o driver usar o método de autenticação única do Azure com MFA.

      • Para idp_tenant, insira your-idp-tenant. Usado apenas para o Microsoft Azure AD. Este é o nome do locatário da sua empresa configurado no Azure AD. Esse valor pode ser o nome do locatário ou o ID exclusivo do locatário com hífens.

      • Para client_id, insira your-azure-redshift-application-client-id. Essa opção é usada apenas para o Microsoft Azure AD. Este é o ID do cliente (com hifens) da aplicação Amazon Redshift que você criou ao definir a configuração de autenticação única do Azure com MFA.

      • Em listen_port, insira your-listen-port. Esta é a porta que o servidor local está escutando. O padrão é 7890.

      • Em idp_response_timeout, insira the-number-of-seconds. Este é o número de segundos a aguardar antes do tempo limite quando o servidor IdP envia de volta uma resposta. O número mínimo de segundos deve ser 10. Se o tempo para estabelecer a conexão for maior do que esse limite, a conexão é cancelada.

ODBC
Como configurar o ODBC para autenticação no Microsoft Azure AD
  • Configure seu cliente de banco de dados para se conectar ao cluster por meio de ODBC usando seu logon único do Azure AD.

    O Amazon Redshift fornece drivers ODBC para sistemas operacionais Linux, Windows e macOS. Antes de instalar um driver de ODBC, será necessário determinar se a ferramenta do cliente SQL é de 32 ou 64 bits. Instale o driver de ODBC que corresponde aos requisitos da ferramenta de cliente SQL.

    No Windows, na página Amazon Redshift ODBC Driver DSN Setup (Configuração do DSN do driver ODBC do Amazon Redshift), em Connection Settings (Configurações de conexão), insira as seguintes informações:

    • Para Data Source Name (Nome da fonte de dados), insira your-DSN. Isto especifica o nome da fonte de dados usado como o nome do perfil de ODBC.

    • Em Auth type (Tipo de autenticação) para a configuração de autenticação única do Azure AD, escolha Identity Provider: Azure AD. Este é o método de autenticação que o driver de ODBC usa para autenticar usando o logon único do Azure.

    • Em Auth type (Tipo de autenticação) para a configuração de autenticação única do Azure AD com MFA, escolha Identity Provider: Browser Azure AD. Este é o método de autenticação que o driver de ODBC usa para autenticar usando o logon único do Azure com MFA.

    • Para Cluster ID (ID do cluster), insira your-cluster-identifier.

    • Para Region (Região), insira your-cluster-region.

    • Para Database (Banco de dados), insira your-database-name.

    • Em User (Usuário), insira your-azure-username. Este é o nome de usuário da conta do Microsoft Azure que está sendo usada para logon único que tem permissão para o cluster que você está tentando autenticar. Use isso somente quando Auth Type (Tipo de autenticação) for Identity Provider: Azure AD (Provedor de identidade: Azure AD).

    • Em Password (Senha), insira your-azure-password. Use isso somente quando Auth Type (Tipo de autenticação) for Identity Provider: Azure AD (Provedor de identidade: Azure AD).

    • Para IdP Tenant (Locatário IdP), insira your-idp-tenant. Este é o nome do locatário da sua empresa configurado no seu IdP (Azure). Esse valor pode ser o nome do locatário ou o ID exclusivo do locatário com hífens.

    • Para Azure Client Secret (Segredo do cliente do Azure), insira your-azure-redshift-application-client-secret. Este é o segredo do cliente da aplicação Amazon Redshift que você criou ao definir sua configuração de logon único do Azure.

    • Para Azure Client ID (ID do cliente do Azure), insira your-azure-redshift-application-client-id. Este é o ID do cliente (com hífens) da aplicação Amazon Redshift que você criou ao definir sua configuração do Azure Single Sign-On.

    • Em Porta de escuta, insira your-listen-port. Esta é a porta de escuta padrão que o servidor local está escutando. O padrão é 7890. Isso se aplica somente ao plug-in do Browser Azure AD.

    • Em Response Timeout (Tempo limite de resposta), insira the-number-of-seconds. Este é o número de segundos a aguardar antes do tempo limite quando o servidor IdP envia de volta uma resposta. O número mínimo de segundos deve ser 10. Se o tempo para estabelecer a conexão for maior do que esse limite, a conexão é cancelada. Esta opção se aplica apenas ao plug-in do Azure AD do navegador.

    No macOS e no Linux, edite o arquivo odbc.ini da seguinte forma:

    nota

    Nenhuma entrada diferencia letras maiúsculas de minúsculas.

    • Para clusterid, insira your-cluster-identifier. Esse é o nome do cluster criado pelo Amazon Redshift.

    • Para region (região), insira your-cluster-region. Esta é a Região da AWS do cluster do Amazon Redshift criado.

    • Para database (banco de dados), insira your-database-name. Este é o nome do banco de dados que você está tentando acessar no cluster do Amazon Redshift.

    • Para locale (localidade), insira en-us. Este é o idioma em que as mensagens de erro são exibidas.

    • Para IAM, insira 1. Esse valor especifica ao driver para autenticar usando credenciais do IAM.

    • Em plugin_name para a configuração de autenticação única do Azure AD, insira AzureAD. Isso especifica ao driver para usar o Azure Single Sign-On como o método de autenticação.

    • Em plugin_name para a configuração de autenticação única do Azure AD com MFA, insira BrowserAzureAD. Isso especifica para o driver usar o logon único do Azure com MFA como o método de autenticação.

    • Em uid, insira your-azure-username. Este é o nome de usuário da conta do Microsoft Azure que você está usando para logon único, que tem permissão para o cluster que você está tentando autenticar. Use isso somente quando plugin_name for AzureAD.

    • Em pwd, insira your-azure-password. Use isso somente quando plugin_name for AzureAD.

    • Para idp_tenant, insira your-idp-tenant. Este é o nome do locatário da sua empresa configurado no seu IdP (Azure). Esse valor pode ser o nome do locatário ou o ID exclusivo do locatário com hífens.

    • Para client_secret, insira your-azure-redshift-application-client-secret. Este é o segredo do cliente da aplicação Amazon Redshift que você criou ao definir sua configuração de logon único do Azure.

    • Para client_id, insira your-azure-redshift-application-client-id. Este é o ID do cliente (com hífens) da aplicação Amazon Redshift que você criou ao definir sua configuração do Azure Single Sign-On.

    • Em listen_port, insira your-listen-port. Esta é a porta que o servidor local está escutando. O padrão é 7890. Isso se aplica ao plug-in do Browser Azure AD.

    • Em idp_response_timeout, insira the-number-of-seconds. Este é o período especificado em segundos para aguardar a resposta do Azure. Esta opção se aplica ao plug-in do Azure AD do navegador.

    No macOS e no Linux, edite também as configurações de perfil para adicionar as exportações a seguir.

    export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
    export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini

Solução de problemas

Para solucionar problemas com o plug-in Browser Azure AD, considere o seguinte:

  • Para usar o plug-in Browser Azure AD, você deve definir o URL de resposta especificado na solicitação para corresponder ao URL de resposta configurado para seu aplicativo. Navegue até a página Configurar o logon único com SAML no portal do Microsoft Azure. Verifique se o URL de resposta está definido como http://localhost/redshift/.

  • Se você receber um erro de locatário IdP, verifique se o nome do Locatário IdP corresponde ao nome de domínio usado inicialmente para configurar o Active Directory no Microsoft Azure.

    No Windows, navegue até a seção Configurações de conexão da página Configuração do DSN do driver ODBC do Amazon Redshift. Verifique se o nome do locatário da empresa configurada no seu IdP (Azure) corresponde ao nome de domínio usado inicialmente para configurar o Active Directory no Microsoft Azure.

    No macOS e no Linux, localize o arquivo odbc.ini. Verifique se o nome do locatário da empresa configurada no seu IdP (Azure) corresponde ao nome de domínio usado inicialmente para configurar o Active Directory no Microsoft Azure.

  • Se você receber um erro informando que o URL de resposta especificado na solicitação não corresponde aos URLs de resposta configurados para seu aplicativo, verifique se os URIs de redirecionamento são os mesmos que o URL de resposta.

    Navegue até a página de Registro de aplicativo do seu aplicativo no portal do Microsoft Azure. Verifique se os URIs de redirecionamento correspondem ao URL de resposta.

  • Se receber a resposta inesperada: erro não autorizado, verifique se você concluiu a configuração de Aplicativos móveis e de desktop.

    Navegue até a página de Registro de aplicativo do seu aplicativo no portal do Microsoft Azure. Navegue até Autenticação e verifique se você configurou Aplicativos móveis e de desktop para usar http://localhost/redshift/ como URIs de redirecionamento.