Azure
Puede usar Microsoft Azure AD como proveedor de identidades (IdP) para obtener acceso al clúster de Amazon Redshift. Este tutorial le muestra cómo puede utilizar Azure como proveedor de identidades (IdP) para acceder al clúster de Amazon Redshift.
Para obtener información acerca de cómo federar el acceso de Amazon Redshift con el inicio de sesión único de Microsoft Azure AD, vea el siguiente video.
Paso 1: Configuración de Azure y la cuenta de AWS para establecer una relación de confianza entre ellas
En el siguiente procedimiento se describe cómo configurar una relación de confianza.
Para configurar Azure AD y su cuenta de AWS para establecer una relación de confianza entre ellas
-
Cree o utilice un clúster de Amazon Redshift existente para que los usuarios de Azure AD se conecten a él. Para configurar la conexión, se necesitan ciertas propiedades de este clúster, como el identificador del clúster. Para obtener más información, consulte Creating a Cluster (Creación de un clúster).
-
Configure un Azure Active Directory, los grupos y los usuarios utilizados para AWS en el portal de Microsoft Azure.
-
Agregue Amazon Redshift como una aplicación para empresas en el portal de Microsoft Azure para utilizar el inicio de sesión único en la consola de AWS y el inicio de sesión federado en Amazon Redshift. Elija Enterprise application (Aplicación de Enterprise).
-
Elija +New application (+Nueva aplicación). Aparecerá la página Add an application (Agregar una aplicación).
-
Buscar
AWS
en el campo de búsqueda. -
Elija Amazon Web Services (AWS) y elija Add (Agregar). Esto crea la aplicación de AWS.
-
En Manage (Administrar), elija Single sign-on (Inicio de sesión único).
-
Elija SAML. Se abrirá la página Amazon Web Services (AWS) | Inicio de sesión basado en SAML.
-
Elija Yes (Sí) para continuar con la página Set up Single Sign-On with SAML (Configurar inicio de sesión único con SAML). Esta página muestra la lista de atributos preconfigurados relacionados con el inicio de sesión único.
-
En Basic SAML Configuration (Configuración básica de SAML), elija el icono de edición y, a continuación, Save (Guardar).
-
Cuando esté configurando para más de una aplicación, proporcione un valor de identificador. Por ejemplo, escriba
. Tenga en cuenta que a partir de la segunda aplicación, utilice este formato con un signo # para especificar un valor SPN único.https://signin.aws.amazon.com/saml#2
-
En la sección User Attributes and Claims (Atributos y reclamaciones de usuario), elija el icono de edición.
De forma predeterminada, las reclamaciones Identificador único de usuario (UID), Role, RoleSessionName y SessionDuration están preconfiguradas.
-
Elija + Add new claim (+Agregar nueva reclamación) para agregar una reclamación para los usuarios de base de datos.
En Nombre, escriba
DbUser
.En Namespace (Espacio de nombres), escriba
https://redshift.amazon.com/SAML/Attributes
.En Source (Origen), elija Attribute (Atributo).
En Source attribute (Atributo de origen), elija user.userprincipalname. A continuación, elija Guardar.
-
Elija + Add new claim (+Agregar nueva reclamación) para agregar una reclamación para AutoCreate.
En Nombre, escriba
AutoCreate
.En Namespace (Espacio de nombres), escriba
https://redshift.amazon.com/SAML/Attributes
.En Source (Origen), elija Attribute (Atributo).
En Source attribute (Atributo de origen), elija "true". A continuación, elija Guardar.
Aquí,
es su cuenta de AWS,123456789012
es un rol de IAM que ha creado yAzureSSO
es el proveedor de IAM.AzureADProvider
Nombre de la reclamación Valor Identificador de usuario único (ID de nombre)
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
-
En Registro de aplicaciones >
> Autenticación, agregue Aplicación móvil y de escritorio. Especifique la URL como http://localhost/redshift/.your-application-name
-
En la sección SAML Signing Certificate (Certificado de firma SAML), elija Download (Descargar) para descargar y guardar el archivo XML de metadatos de federación para usarlo cuando cree un proveedor de identidad SAML de IAM. Este archivo se utiliza para crear la identidad federada de inicio de sesión único.
-
Cree un proveedor de identidad SAML de IAM en la consola de IAM. El documento de metadatos que proporciona es el archivo XML de metadatos de federación que guardó al configurar Azure Enterprise Application. Para obtener información detallada sobre los pasos, consulte Creación y administración de un proveedor de identidad de IAM (Consola) en la Guía del usuario de IAM.
-
Cree un rol de IAM para la federación de SAML 2.0 en la consola de IAM. Para obtener información detallada sobre los pasos, consulte Creación de un rol para SAML en la Guía del usuario de IAM.
Cree una directiva de IAM que pueda adjuntar al rol de IAM creado para la federación de SAML 2.0 en la consola de IAM. Para obtener información detallada sobre los pasos, consulte Creación de políticas de IAM (Consola) en la Guía del usuario de IAM.
Modifique la siguiente política (en formato JSON) para su entorno:
Sustituya la región de AWS de su clúster por
.us-west-1
Sustituya su cuenta de AWS por
.123456789012
Sustituya el identificador de clúster (o
*
para todos los clústeres) por
.cluster-identifier
Sustituya la base de datos (o
*
para todas las bases de datos) por
.dev
Sustituya el identificador único de su rol de IAM por
.AROAJ2UCCR6DPCEXAMPLE
Sustituya el dominio de correo electrónico de su arrendatario o empresa por
.example.com
Sustituya el grupo de base de datos al que planea asignar el usuario 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 permisos de la siguiente manera:
La primera sección concede permiso a la operación
GetClusterCredentials
de la API para obtener credenciales temporales para el clúster especificado. En este ejemplo, el recurso es
con la base de datoscluster-identifier
, en la cuentadev
y en la región AWS123456789012
. La cláusulaus-west-1
${redshift:DbUser}
permite que sólo los usuarios que coincidan con el valorDbUser
especificado en Azure AD se conecten.La cláusula de condición obliga a que solo ciertos usuarios obtengan credenciales temporales. Se trata de usuarios con el rol especificado por el ID único de rol
en la cuenta de IAM identificada por una dirección de email en el dominio de correo electrónico de su empresa. Para obtener más información acerca de los ID únicos, consulte ID únicos en la Guía del usuario de IAM.AROAJ2UCCR6DPCEXAMPLE
La configuración con el IdP (en este caso, Azure AD) determina cómo se escribe la cláusula de condición. Si el correo electrónico de su empleado es
johndoe@example.com
, primero establezca${redshift:DbUser}
en el supercampo que coincida con el nombre de usuario del empleadojohndoe
. A continuación, para que esta condición funcione, configure el campoRoleSessionName
de SAML de AWS en el supercampo que concuerde con el email del empleadojohndoe@example.com
. Cuando tome este enfoque, tenga en cuenta lo siguiente:Si establece
${redshift:DbUser}
para que sea el correo electrónico del empleado, quite el@example.com
en el archivo JSON de muestra para que coincida con elRoleSessionName
.Si establece
RoleSessionId
para que solo sea el nombre de usuario del empleado, quite el@example.com
en el ejemplo para que coincida con elRoleSessionName
.En el JSON de ejemplo,
${redshift:DbUser}
yRoleSessionName
se establecen en el correo electrónico del empleado. En este ejemplo, JSON utiliza el nombre de usuario de la base de datos de Amazon Redshift con@example.com
para que el usuario inicie sesión y acceda al clúster.
La segunda sección concede permiso para crear un nombre
dbuser
en el clúster especificado. En este JSON de muestra, restringe la creación a${redshift:DbUser}
.La tercera sección concede permisos para especificar a qué
dbgroup
puede unirse un usuario. En este JSON de muestra, un usuario puede unirse al grupomy_dbgroup
en el clúster especificado.La cuarta sección otorga permiso a las acciones que el usuario puede realizar en todos los recursos. En este JSON de ejemplo, se permite a los usuarios llamar a
redshift:DescribeClusters
para obtener información del clúster, como el punto de conexión del clúster, la región de AWS y el puerto. También permite a los usuarios llamar aiam:ListRoles
para comprobar qué roles puede asumir un usuario.
Paso 2: Configuración de JDBC u ODBC para la autenticación en Azure
Solución de problemas
Para solucionar problemas con el complemento Browser Azure AD, tenga en cuenta lo siguiente.
-
Para utilizar el complemento Azure AD de navegador, debe establecer la URL de respuesta especificada en la solicitud para que coincida con la URL de respuesta configurada para la aplicación. Vaya a la página Configurar el inicio de sesión único con SAML en el portal de Microsoft Azure. A continuación, compruebe que la URL de respuesta está establecida en http://localhost/redshift/.
-
Si aparece un error de inquilino de IdP, compruebe que el nombre de Inquilino de IdP coincide con el nombre de dominio que utilizó inicialmente para configurar Active Directory en Microsoft Azure.
En Windows, vaya a la sección Connection Settings (Configuración de conexión) de la página Amazon Redshift ODBC DSN Setup (Configuración de DSN de ODBC de Amazon Redshift). A continuación, compruebe que el nombre de inquilino de su empresa configurado en su IdP (Azure) coincide con el nombre de dominio que utilizó inicialmente para configurar Active Directory en Microsoft Azure.
En macOS y Linux, busque el archivo odbc.ini. A continuación, compruebe que el nombre de inquilino de su empresa configurado en su IdP (Azure) coincide con el nombre de dominio que utilizó inicialmente para configurar Active Directory en Microsoft Azure.
-
Si aparece un error que indica que la URL de respuesta especificada en la solicitud no coincide con las URL de respuesta configuradas para la aplicación, verifique que los URI de redirección son los mismos que la URL de respuesta.
Vaya a la página Registro de aplicaciones de su aplicación en el portal de Microsoft Azure. A continuación, compruebe que los URI de redirección coinciden con la URL de respuesta.
-
Si obtiene la respuesta inesperada de error no autorizado, verifique que haya completado la configuración de Aplicaciones móviles y de escritorio.
Vaya a la página Registro de aplicaciones de su aplicación en el portal de Microsoft Azure. A continuación, vaya a Autenticación y compruebe que ha configurado Aplicaciones móviles y de escritorio para utilizar http://localhost/redshift/ como URI de redirección.