En esta sección se muestran los pasos para configurar el proveedor de identidades y Amazon Redshift para establecer la comunicación para la federación de proveedores de identidades nativos. Necesita una cuenta activa del proveedor de identidades. Antes de configurar Amazon Redshift, registre Redshift como aplicación en el proveedor de identidades, concediendo permiso como administrador.
Complete los siguientes pasos en Amazon Redshift:
-
Ejecute una instrucción SQL para registrar el proveedor de identidades, incluidas las descripciones de los metadatos de la aplicación de Azure. Para crear el proveedor de identidades en Amazon Redshift, ejecute el siguiente comando después de sustituir los valores de los parámetros issuer, client_id, client_secret y audience. Estos parámetros son específicos de Microsoft Azure AD. Sustituya el nombre del proveedor de identidades por el nombre de su elección y sustituya el espacio de nombres por un nombre exclusivo para contener usuarios y roles del directorio del proveedor de identidades.
CREATE IDENTITY PROVIDER oauth_standard TYPE azure NAMESPACE 'aad' PARAMETERS '{ "issuer":"https://sts.windows.net/2sdfdsf-d475-420d-b5ac-667adad7c702/", "client_id":"<client_id>", "client_secret":"BUAH~ewrqewrqwerUUY^%tHe1oNZShoiU7", "audience":["https://analysis.windows.net/powerbi/connector/AmazonRedshift"] }'
El tipo
azure
indica que el proveedor facilita específicamente la comunicación con Microsoft Azure AD. En la actualidad, es el único proveedor de identidades de terceros admitido.-
issuer: el ID de emisor en el que confiar cuando se recibe un token. El identificador único para tenant_id se adjunta al emisor.
-
client_id: el identificador público único de la aplicación registrado en el proveedor de identidades. Esto se puede denominar ID de aplicación.
-
client_secret: un identificador secreto o contraseña, que solo conocen el proveedor de identidades y la aplicación registrada.
-
audience: el ID de aplicación que se asigna a la aplicación en Azure.
En lugar de utilizar un secreto de cliente compartido, puede establecer parámetros para especificar un certificado, una clave privada y una contraseña de clave privada al crear el proveedor de identidades.
CREATE IDENTITY PROVIDER example_idp TYPE azure NAMESPACE 'example_aad' PARAMETERS '{"issuer":"https://sts.windows.net/2sdfdsf-d475-420d-b5ac-667adad7c702/", "client_id":"<client_id>", "audience":["https://analysis.windows.net/powerbi/connector/AmazonRedshift"], "client_x5t":"<certificate thumbprint>", "client_pk_base64":"<private key in base64 encoding>", "client_pk_password":"test_password"}';
La contraseña de la clave privada, client_pk_password, es opcional.
-
-
Opcional: ejecute comandos SQL en Amazon Redshift para crear previamente usuarios y roles. Esto facilita la concesión de permisos por adelantado. El nombre del rol en Amazon Redshift es como el siguiente: <Espacio de nombres>:<GroupName en Azure AD>. Por ejemplo, cuando crea un grupo en Microsoft Azure AD llamado
rsgroup
y un espacio de nombres llamadoaad
, el nombre del rol esaad:rsgroup
. Los nombres de usuario y rol en Amazon Redshift se definen a partir de estos nombres de usuario y pertenencias a grupos en el espacio de nombres del proveedor de identidades.La asignación de roles y usuarios incluye la verificación de su valor
external_id
, para garantizar que esté actualizado. El ID externo se asigna al identificador del grupo o usuario en el proveedor de identidades. Por ejemplo, el ID externo de un rol se asigna al ID de grupo de Azure AD correspondiente. Del mismo modo, el ID externo de cada usuario se asigna a su ID en el proveedor de identidades.create role "aad:rsgroup";
-
Otorgue los permisos pertinentes a los roles según los requisitos. Por ejemplo:
GRANT SELECT on all tables in schema public to role "aad:rsgroup";
-
También puede conceder permisos a un usuario específico.
GRANT SELECT on table foo to aad:alice@example.com
Tenga en cuenta que la pertenencia al rol de un usuario externo federado solo está disponible en la sesión de ese usuario. Esto tiene implicaciones en la creación de objetos de base de datos. Cuando un usuario externo federado crea una vista o un procedimiento almacenado, por ejemplo, no puede delegar el permiso de esos objetos a otros usuarios y roles.
Una explicación de los espacios de nombres
Un espacio de nombres asigna un usuario o rol a un proveedor de identidades específico. Por ejemplo, el prefijo para los usuarios creados en AWS IAM es iam:
. Este prefijo evita las colisiones de nombres de usuario y posibilita la compatibilidad con varios almacenes de identidades. Si un usuario alice@ejemplo.com del origen de identidad registrado con el espacio de nombres aad inicia sesión, el usuario aad:alice@example.com
se crea en Redshift si no existe todavía. Tenga en cuenta que un espacio de nombres de rol y usuario tiene una función distinta a la de un espacio de nombres de clúster de Amazon Redshift, que es un identificador único asociado a un clúster.