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.
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.
- 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.
- 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.
- Agrega un permissions boundary para que el rol de personalización nunca pueda escalar más allá de sus buckets/claves.
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.
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.
- 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.
- 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.
- Adjunta un permissions boundary para acotar el alcance del rol incluso si su política se edita luego.
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.
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
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
AI Security Maturity Model