Integraciones

AWS IAM Identity Center

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ía ListApplicationAssignments y 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 a ListUsers sobre 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

  1. Vaya a la consola de IAM (Identity and Access Management), no a Identity Center.

  2. Vaya a Usuarios > Crear usuario.

  3. Asigne un nombre (ej. anjana-provisioning-user).

  4. No marque la casilla de acceso a la consola de administración (solo necesitamos acceso programático).

  5. Complete la creación.

  6. Una vez creado, vaya a la pestaña Credenciales de seguridad > Claves de acceso > Crear clave de acceso.

  7. Seleccione "Código local" o "Aplicación de terceros".

  8. 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):

JSON
{
    "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):

JSON
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AnjanaProvisioningRead",
            "Effect": "Allow",
            "Action": [
                "identitystore:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
  1. 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.

  1. Vaya a la consola de IAM Identity Center.

  2. 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).

  3. 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.

YAML
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.

YAML
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

access-key

ID de la clave del usuario técnico

IAM (Users)

secret-key

Secreto de la clave del usuario técnico

IAM (Users)

region

Código de la región AWS (ej. eu-west-1)

Consola AWS (esquina superior derecha)

identity-store-id

Identificador del directorio de usuarios

IAM Identity Center > Configuración

application-arn

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)

userName

userName

email

email

firstName

givenName, displayName

lastName

familyName

phone

phoneNumber

title

title

Campos disponibles

Clave

Descripción

userId

Identificador único del usuario en el Identity Store.

userName

Nombre de usuario único (login).

displayName

Nombre para mostrar.

nickName

Apodo o nombre informal.

title

Cargo o puesto.

userType

Tipo de usuario.

preferredLanguage

Idioma preferido.

locale

Configuración regional.

timezone

Zona horaria.

givenName

Nombre de pila (del campo name.givenName).

familyName

Apellidos (del campo name.familyName).

middleName

Segundo nombre.

formattedName

Nombre completo formateado.

email

Primera dirección de correo del usuario.

phoneNumber

Primer número de teléfono del usuario.

streetAddress

Calle (primera dirección postal).

locality

Ciudad o localidad.

region

Región o provincia.

postalCode

Código postal.

country

País.

Ejemplo de configuración

YAML
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"]