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
-
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.
-
Configure grupos e usuários do Diretório Ativo do Azure usados para a AWS no portal do Microsoft Azure.
-
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).
-
Escolha +New application (+Novo aplicativo). A página Adicionar um aplicativo é exibida.
-
Pesquise
AWS
no campo de pesquisa. -
Escolha Amazon Web Services (AWS) e escolha Adicionar. Isso cria a aplicação da AWS.
-
Em Manage (Gerenciar), escolha Single sign-on (Logon único).
-
Escolha SAML. O Amazon Web Services (AWS) | A página de logon baseada em SAML é exibida.
-
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.
-
Em Basic SAML Configuration (Configuração básica de SAML), escolha o ícone de edição e Save (Salvar).
-
Quando você estiver configurando mais de um aplicativo, forneça um valor de identificador. Por exemplo, digite
. Observe que a partir do segundo aplicativo em diante, use esse formato com um sinal # para especificar um valor SPN exclusivo.https://signin.aws.amazon.com/saml#2
-
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.
-
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.
-
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,
é a conta da AWS,123456789012
é uma função do IAM que você criou eAzureSSO
é o provedor do IAM.AzureADProvider
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
-
Em Registro de aplicativo >
> Autenticação, adicione Aplicativo móvel e desktop. Especifique o URL como http://localhost/redshift/.your-application-name
-
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.
-
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.
-
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.
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 é
com banco de dadoscluster-identifier
, na contadev
e na região da AWS123456789012
. A cláusulaus-west-1
${redshift:DbUser}
permite que apenas os usuários que correspondam ao valor deDbUser
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
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.AROAJ2UCCR6DPCEXAMPLE
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áriojohndoe
. Então, para fazer essa condição funcionar, defina o campoRoleSessionName
do AWS SAML como o supercampo que corresponde ao e-mail do funcionáriojohndoe@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 oRoleSessionName
.Se você definir o
RoleSessionId
para ser apenas o nome de usuário do funcionário, remova o@example.com
no exemplo para corresponder aoRoleSessionName
.No JSON de exemplo, tanto
${redshift:DbUser}
comoRoleSessionName
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 grupomy_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 chamemiam:ListRoles
para verificar quais funções um usuário pode assumir.
Etapa 2: configurar JDBC ou ODBC para autenticação no Azure
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.