Provisión con AWS IAM Identity Center
Este módulo permite a Anjana Data sincronizar usuarios desde AWS IAM Identity Center (anteriormente AWS SSO).
Existen dos modos de sincronización según si se configura o no el application-arn:
-
Modo filtrado por Aplicación (con
application-arn): Anjana consulta las asignaciones de la aplicación SAML víaListApplicationAssignmentsy resuelve solo los usuarios y grupos asignados. Recomendado cuando solo un subconjunto de la organización debe tener acceso. -
Modo Identity Store completo (sin
application-arn): Anjana llama directamente aListUserssobre el Identity Store y sincroniza todos los usuarios del directorio.
Parte 1: Configuración en AWS (IAM User)
Para acceder a la API de AWS de forma segura, crearemos un usuario técnico (IAM User) con permisos de lectura restringidos.
Paso 1: Crear Usuario IAM
-
Vaya a la consola de IAM (Identity and Access Management), no a Identity Center.
-
Vaya a Usuarios > Crear usuario.
-
Asigne un nombre (ej.
anjana-provisioning-user). -
No marque la casilla de acceso a la consola de administración (solo necesitamos acceso programático).
-
Complete la creación.
-
Una vez creado, vaya a la pestaña Credenciales de seguridad > Claves de acceso > Crear clave de acceso.
-
Seleccione "Código local" o "Aplicación de terceros".
-
Importante: Copie y guarde la Clave de acceso (Access Key) y la Clave de acceso secreta (Secret Key).
Paso 2: Asignar Permisos (Policy)
Los permisos necesarios varían según el modo que vaya a utilizar:
Modo filtrado por Aplicación (con application-arn):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AnjanaProvisioningRead",
"Effect": "Allow",
"Action": [
"sso:ListApplicationAssignments",
"identitystore:DescribeUser",
"identitystore:DescribeGroup",
"identitystore:ListGroupMemberships",
"identitystore:GetGroupId",
"identitystore:GetUserId"
],
"Resource": "*"
}
]
}
Modo Identity Store completo (sin application-arn):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AnjanaProvisioningRead",
"Effect": "Allow",
"Action": [
"identitystore:ListUsers"
],
"Resource": "*"
}
]
}
-
Asigne un nombre a la política (ej.
AnjanaProvisioningPolicy) y guarde los cambios.
Parte 2: Obtención de IDs en IAM Identity Center
Necesitamos localizar el Identity Store ID y, si va a usar el modo filtrado, también el ARN de la aplicación.
-
Vaya a la consola de IAM Identity Center.
-
Identity Store ID:
-
En el menú lateral, vaya a Configuración.
-
Busque la sección "Almacén de identidades".
-
Copie el ID del almacén de identidades (ej.
d-9067xxxxxx).
-
-
Application ARN (solo para modo filtrado por aplicación):
-
Vaya a Aplicaciones de la aplicación.
-
Seleccione la aplicación SAML que creó para Anjana Data.
-
En la cabecera de detalles, copie el ARN de la aplicación (ej.
arn:aws:sso::123456789012:application/ssoins-xxxx/apl-yyyy).
-
Parte 3: Configuración en application.yml
Modo filtrado por Aplicación (con application-arn)
Solo se sincronizan los usuarios y grupos asignados a la aplicación indicada.
security:
provisioning:
providers:
aws-iam-ic:
aws-prod:
region: "eu-west-1"
access-key: "AKIAXXXXXXXXXXXXXXXX"
secret-key: "SUPER_SECRET_KEY_XXXXXXXXXXXXXXXX"
identity-store-id: "d-9067xxxxxx"
# ARN de la aplicación (Parte 2)
application-arn: "arn:aws:sso::123456789012:application/ssoins-xxxx/apl-yyyy"
Modo Identity Store completo (sin application-arn)
Se sincronizan todos los usuarios del Identity Store.
security:
provisioning:
providers:
aws-iam-ic:
aws-prod:
region: "eu-west-1"
access-key: "AKIAXXXXXXXXXXXXXXXX"
secret-key: "SUPER_SECRET_KEY_XXXXXXXXXXXXXXXX"
identity-store-id: "d-9067xxxxxx"
# application-arn no configurado → sincronización de todo el Identity Store
Resumen de Propiedades
|
Propiedad |
Descripción |
Origen |
Obligatorio |
|---|---|---|---|
|
|
ID de la clave del usuario técnico |
IAM (Users) |
Sí |
|
|
Secreto de la clave del usuario técnico |
IAM (Users) |
Sí |
|
|
Código de la región AWS (ej. |
Consola AWS (esquina superior derecha) |
Sí |
|
|
Identificador del directorio de usuarios |
IAM Identity Center > Configuración |
Sí |
|
|
ARN de la app. Si está presente, solo sincroniza sus usuarios asignados. Si está ausente, sincroniza todo el Identity Store. |
IAM Identity Center > Aplicaciones |
No (opcional) |
Mapeo de campos personalizado (field-mapping)
Anjana incluye un mapeo por defecto que cubre los casos habituales. Puede sobreescribir cualquier campo indicando la clave del proveedor de la que debe leer el valor. Las claves son listas en orden de prioridad: se usa el primer valor no vacío.
Mapeo por defecto
|
Campo Anjana |
Claves por defecto (orden de prioridad) |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Campos disponibles
|
Clave |
Descripción |
|---|---|
|
|
Identificador único del usuario en el Identity Store. |
|
|
Nombre de usuario único (login). |
|
|
Nombre para mostrar. |
|
|
Apodo o nombre informal. |
|
|
Cargo o puesto. |
|
|
Tipo de usuario. |
|
|
Idioma preferido. |
|
|
Configuración regional. |
|
|
Zona horaria. |
|
|
Nombre de pila (del campo name.givenName). |
|
|
Apellidos (del campo name.familyName). |
|
|
Segundo nombre. |
|
|
Nombre completo formateado. |
|
|
Primera dirección de correo del usuario. |
|
|
Primer número de teléfono del usuario. |
|
|
Calle (primera dirección postal). |
|
|
Ciudad o localidad. |
|
|
Región o provincia. |
|
|
Código postal. |
|
|
País. |
Ejemplo de configuración
security:
provisioning:
providers:
aws-iam-ic:
aws-prod:
region: "eu-west-1"
access-key: "..."
secret-key: "..."
identity-store-id: "d-9067xxxxxx"
field-mapping:
# Usar displayName como nombre si givenName está vacío
first-name: ["givenName", "displayName"]
# Leer cargo y, si está vacío, usar userType
title: ["title", "userType"]