AI Security Maturity Model·AWS v1.0.0

Arrastra para explorar · pellizca para ampliar

Fundacional Gestión de identidad y accesoCapa de defensa en profundidad: Identidad y datos Capacidad 2 · Personalización de modelosCaso de uso: IA que construyes 👤 ClienteModelo de Responsabilidad Compartida de AWS: quién implementa y opera este control. Cliente = es tuyo; AWS = lo opera AWS y tú lo heredas; Compartida = ambos tienen obligaciones.

c2.2 Usa un rol de servicio de mínimo privilegio para personalización e importación

Crea un rol de servicio de IAM dedicado para la personalización o importación de modelos que otorgue solo los permisos que el job necesita, siguiendo el mínimo privilegio.

Fundacional
Mejorada
Avanzada
Esfuerzo: Bajo Impacto: Alto Scopes de IA generativaDe la AWS Generative AI Security Scoping Matrix.: 4 · Modelos ajustados (fine-tuned); 5 · Modelos entrenados por ti

Guía de implementación

Cómo implementarlo en AWS

Crea un rol de servicio de IAM personalizado para el job de personalización o importación de Bedrock/SageMaker, acotado a los buckets S3 y claves KMS específicos que usa, sin acceso más amplio. Separa este rol de los roles de inferencia y administración.

Por qué la personalización necesita su propio rol

La personalización de modelos (fine-tuning, distilación, pre-entrenamiento continuo) se ejecuta como un trabajo asíncrono que Amazon Bedrock realiza en tu nombre. Bedrock asume un rol de servicio de IAM para leer tus datos de entrenamiento/validación desde S3, escribir métricas de salida y —si tus datos están cifrados— usar tu clave de KMS. Como ese rol puede leer tus datos de entrenamiento, debe estar dedicado a la personalización y acotado exactamente a los buckets y claves involucrados, no ser un rol compartido o amplio.

Confía solo en Bedrock, y solo para tu cuenta

La política de confianza del rol debe permitir que el principal de servicio de Bedrock lo asuma, restringida con aws:SourceAccount (e idealmente aws:SourceArn) para que un "confused deputy" en otra cuenta no pueda tomarlo prestado:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": { "Service": "bedrock.amazonaws.com" },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": { "aws:SourceAccount": "111122223333" },
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:bedrock:us-east-1:111122223333:model-customization-job/*"
        }
      }
    }
  ]
}

Concede solo el acceso a S3 (y KMS) que el trabajo necesita

La política de permisos debe listar los buckets específicos de datos de entrada y salida, nada más amplio:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ReadTrainingData",
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:ListBucket"],
      "Resource": [
        "arn:aws:s3:::my-bedrock-training-data",
        "arn:aws:s3:::my-bedrock-training-data/*"
      ]
    },
    {
      "Sid": "WriteJobOutput",
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::my-bedrock-custom-output/*"
    }
  ]
}

Si esos buckets usan una clave de KMS administrada por el cliente, añade kms:Decrypt (y kms:GenerateDataKey para el bucket de salida) sobre ese ARN de clave específico; sin ello el trabajo falla con un error de acceso.

Mantenlo separado del rol de invocación

El rol de personalización lee datos de entrenamiento; el rol de invocación en runtime llama a los modelos (consulta el control de IAM de mínimo privilegio). No los fusiones: una carga de trabajo que solo necesita invocar un modelo nunca debería tener permisos para leer tu corpus de entrenamiento.

Nota de nomenclatura: reemplaza el id de cuenta, la región y los nombres de bucket. Acota aws:SourceArn al patrón de ARN del trabajo de personalización para que el rol solo sea asumible para ese tipo de trabajo.

Criterios de aceptación

El job de personalización usa un rol de mínimo privilegio dedicado acotado a sus buckets/claves; no se reutiliza un rol de admin o inferencia compartido.

Implementación práctica

Cómo se implementa este control en cada arquitectura de referencia:

Un rol de servicio de personalización dedicado en la cuenta de IA generativa se acota solo a los buckets de entrenamiento y claves específicos, separado de los roles de invocación y administración.

  1. Crea un rol de servicio de IAM dedicado para el job de personalización de Bedrock/SageMaker, con acceso solo a los buckets S3 de entrenamiento/validación específicos y a la clave KMS de personalización.
    Cuenta de IA generativa IAM Amazon Bedrock Amazon SageMaker
  2. Confirma que este rol no es el rol de invocación de inferencia ni un rol de administración; cada función tiene su propio rol.
    Cuenta de IA generativa IAM
  3. Agrega un permissions boundary para que el rol de personalización nunca pueda escalar más allá de sus buckets/claves.
    Cuenta de IA generativa IAM

Cómo validar: El job corre bajo un rol dedicado acotado a sus buckets/claves; IAM Access Analyzer no muestra acceso amplio; el rol es distinto de los roles de invocación/administración.

Evita: Reutilizar un rol de administración o inferencia para ejecutar el job de entrenamiento porque 'ya funciona'. Un pipeline de entrenamiento comprometido hereda entonces mucho más de lo que necesita.

OU de IA generativa (multi-cuenta) →

Un rol de personalización de mínimo privilegio distinto en la cuenta se acota a sus buckets y claves y se mantiene separado de los roles en ejecución y de administración.

  1. Crea un rol de servicio de personalización dedicado acotado a los buckets de entrenamiento específicos y a la clave KMS, sin acceso más amplio.
    Capa de IA generativa (rol IAM) IAM Amazon Bedrock Amazon SageMaker
  2. Mantenlo separado del rol de invocación del modelo y de cualquier rol de administración, para que entrenamiento, inferencia y administración tengan cada uno su identidad.
    Capa de IA generativa (rol IAM) IAM
  3. Adjunta un permissions boundary para acotar el alcance del rol incluso si su política se edita luego.
    Capa de aplicación (rol IAM) IAM

Cómo validar: El job de personalización usa un rol dedicado acotado a sus buckets/claves; no es el rol de invocación ni de administración; hay un permissions boundary adjunto.

Evita: Un solo rol multiuso para entrenamiento, inferencia y administración en la cuenta única. Separa las funciones por rol para que un compromiso de entrenamiento quede contenido.

Cuenta única (punto de entrada) →

Amenazas que atiende

  • Un rol de personalización con permisos excesivos que alcanza datos o acciones fuera del job.
  • Movimiento lateral desde un pipeline de entrenamiento comprometido.

Servicios AWS

AWS IAM Amazon Bedrock Amazon SageMaker AI

Precios

Los roles y las políticas de IAM son gratuitos. Pagas por el trabajo de personalización (por token procesado / por hora según el método) y por almacenar los datos de entrenamiento y el modelo personalizado resultante; el rol en sí no añade costo. Consulta Create a service role for model customization.

Mapeos de frameworks

OWASP GenAI/LLM Top 10 (2026)

  • LLM05 Data and Model Poisoning

NIST AI Risk Management Framework (AI 100-1)

  • MANAGE.1 AI risks are prioritized, responded to and managed

AWS Security Hub — AI Security Best Practices

  • SageMaker.3 Users should not have root access to SageMaker notebook instances

AWS Well-Architected Generative AI Lens (Security)

  • GENSEC01-BP01 Grant least privilege access to foundation model endpoints

Recursos de aprendizaje

Referencias

  • AWS SRA para IA — Capacidad 2, Gestión de identidad y acceso