Este documento presenta las mejores prácticas de seguridad para Identity and Access Management (IAM) en AWS. Se describen 10 mejores prácticas clave para IAM, incluyendo la creación de usuarios individuales, otorgar permisos mínimos, administrar permisos mediante grupos, habilitar AWS CloudTrail para auditoría, configurar una política de contraseñas robusta, rotar credenciales regularmente, habilitar MFA para usuarios privilegiados, usar roles IAM para compartir accesos, usar roles IAM para instancias EC2, y
5. AWS
• Edificios
• Seguridad Física
• Infraestructura Física
• Infraestructura de red
• Infraestructura de
virtualización
• Sistemas operativos
• Aplicaciones
• Grupos de seguridad
• Firewalks y SO
• Configuración de red
• Administración de
cuentas
Cliente
6. ¿Cómo es que AWS obtiene su seguridad?
• Acceso físico es grabado en video,
almacenado y revisado
• Existe una autenticación Multi-factor
para el acceso físico
• Segregación de responsabilidades:
Personal con acceso físico Vs.
Personal con acceso lógico
Y Cada 90 días…
12. AWS Identity and Access Management (IAM)
Le permite a usted controlar quien puede hacer que en
su cuenta de AWS
• Usuarios, Grupos, Roles, Permisos
• Controlar…
– Centralizado
– Granularidad fina - APIs, recursos, y la consola de administración de AWS
• Seguridad…
– Segura (negar) por omisión
– Múltiples usuarios, credenciales de seguridad y permisos individuales
16. 0. Crear usuarios individuales
Beneficios
• Credenciales únicas
• Rotación individual de
credenciales
• Permisos Individuales
Como iniciar
• Identifica que usuarios
necesitamos crear dentro de
IAM
• Utilice la consola, CLI o API
para:
- Crear usuarios
- Asignar credenciales
- Asignar permisos
18. 1. Otorgue el menor privilegio
Beneficios
• Menor oportunidad de que la
persona ocurra en un error
• Es mas fácil relajar la
seguridad que incrementarla
• Mayor control granular
– API y resource
Como iniciar
• Identifique cuales son los
permisos requeridos
• Contraseñas o access keys?
• Evite asignar políticas *:*
• Default Deny
• Utilice los ”policy templates”
NOTA IMPORTANTE: Los permisos no aplican a root!
20. 2. Administre los permisos con grupos
Beneficios
• Mas sencillo de asignar los
mismos permisos a múltiples
usuarios
• Mas sencillo reasignar los
cambios en los permisos
basados en responsabilidades
• Solo es necesario un cambio
para actualizar los permisos de
múltiples usuarios
Como iniciar
• Empate los permisos a
funciones especificas del
negocio
• Asigne los usuarios a esa
función
• Administre los grupos en su
sección dentro de la consola de
IAM
22. 3. Restringa los privilegios de acceso con
condiciones
Beneficios
• Granularidad adicional cuando
se definen los permisos
• Puede ser utilizada para
cualquier servicio API de AWS
• Minimiza el riesgo de realizar
una acción privilegiada de
manera accidental
Como iniciar
• Utilice las condiciones cuando
aplique
• Dos tipos de condiciones
- AWS common
- Service-specific
23. Restringa los privilegios de acceso con condiciones
{
"Statement":[{
"Effect":"Allow",
"Action":["ec2:TerminateInstances"],
"Resource":["*"],
"Condition":{
"Null":{"aws:MultiFactorAuthAge":"false"}
}
}
]
}
Enables a user to terminate EC2 instances only
if the user has authenticated with their MFA
device.
MFA
{
"Statement":[{
"Effect":"Allow",
"Action":"iam:*AccessKey*",
"Resource”:"arn:aws:iam::123456789012:user/*",
"Condition":{
"Bool":{"aws:SecureTransport":"true"}
}
}
]
}
Enables a user to manage access keys for all
IAM users only if the user is coming over SSL.
SSL
{
"Statement":[{
"Effect":"Allow",
"Action":["ec2:TerminateInstances“],
"Resource":["*“],
"Condition":{
"IpAddress":{"aws:SourceIP":"192.168.176.0/24"}
}
}
]
}
Enables a user to terminate EC2 instances only if the
user is accessing Amazon EC2 from the 192.168.176.0/24
address range.
SourceIP
{
"Statement":[{
"Effect": "Allow",
"Action":"ec2:TerminateInstances",
"Resource": "*",
"Condition":{
"StringEquals":{"ec2:ResourceTag/Environment":"Dev"}
}
}
]
}
Enables a user to terminate EC2 instances only if the
instance is tagged with “Environment=Dev”.
Tags
{ "Sid": "ThisBitGrantsAccessToResourcesForTerminateInstances", "Effect": "Allow", "Action":"ec2:TerminateInstances", "Resource": "*", "Condition": { "StringEquals": {"ec2:ResourceTag/Environm
{ "Sid": "ThisBitGrantsAccessToResourcesForTerminateInstances", "Effect": "Allow", "Action":"ec2:TerminateInstances", "Resource": "*", "Condition": { "StringEquals": {"ec2:ResourceTag/Environment":
{ "Sid": "ThisBitGrantsAccessToResourcesForTerminateInstances", "Effect": "Allow", "Action":"ec2:TerminateInstances", "Resource": "*", "Condition": { "StringEquals": {"ec2:ResourceTag/Environment":
25. 4. Habilite AWS CloudTrail para generar logs de las
llamadas API
Beneficios
• Da visibilidad de la actividad
de usuarios al grabar las
llamadas API de AWS en una
cubeta de Amazon S3
Como iniciar
• Configure una cubeta de
Amazon S3
• Habilite AWS CloudTrail
Asegure que los servicios estén integrados con AWS CloudTrail
28. 5. Configure una política de contraseñas robusta
Beneficios
• Asegura que los usuarios
y los datos están
protegidos
Como iniciar
• Cual es la política de
contraseñas de su
compañía
• Se puede configurar
- Password expiration
- Password strength
• Uppercase, lowercase, numbers,
non-alphanumeric
- Password re-use
NOTA IMPORTANTE: La policía de contraseñas no aplica a root
30. 6. Rote/elimine las credenciales de seguridad
regularmente
Beneficios
• Mejor practica común
Como iniciar
• Utilice los reportes de credenciales
para identificar cuales deben ser
rotadas o eliminadas
• La consola IAM despliega cuando
fue usado la contraseña
• Otorgue permisos de usuarios IAM
para rotar credenciales
• Roles IAM para Amazon EC2
rotan credenciales
automáticamente
31. Habilite la rotación de credenciales IAM para
los usuarios (enable password rotation sample policy)
Password
{
"Version":"2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "iam:ChangePassword",
"Resource":
"arn:aws:iam::123456789012:user/${aws:username}"
}
]
}
Enforcing a password policy will automatically enable
IAM users to manage their passwords
Observe el uso
de una política
variable
32. Habilite la rotación de credenciales IAM para los
usuarios (enable access key rotation sample policy)
Access Keys
{
"Version":"2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"iam:CreateAccessKey",
"iam:DeleteAccessKey",
"iam:ListAccessKeys",
"iam:UpdateAccessKey"],
"Resource":
"arn:aws:iam::123456789012:user/${aws:username}"
}
]
}
33. Habilite la rotación de credenciales IAM para los
usuarios (enable access key rotation sample policy)
Access Keys
{
"Version":"2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"iam:CreateAccessKey",
"iam:DeleteAccessKey",
"iam:ListAccessKeys",
"iam:UpdateAccessKey"],
"Resource":
"arn:aws:iam::123456789012:
user/${aws:username}"
}
]
}
1. While the first set of credentials is still
active, create a second set of
credentials, which will also be active
by default.
2. Update all applications to use the
new credentials.
3. Change the state of the first set of
credentials to Inactive.
4. Using only the new credentials,
confirm that your applications are
working well.
5. Delete the first set of credentials.
Steps to rotate access keys
34. 7. MFA
Habilite la autenticación multi factor para usuarios privilegiados
35. 7. Habilite MFA para usuarios
privilegiados
Beneficios
• Suplemente para la
autenticación de usuario y
contraseña que requiere un
código único
Como iniciar
• Escoja un tipo de MFA
- Virtual MFA
- Hardware
• Utilice la consola IAM para
asignar un dispositivo MFA
37. 8. Utilice roles IAM para compartir acceso
Beneficios
• Sin necesidad de compartir las
credenciales de seguridad
• Sin necesidad de almacenar las
credenciales a largo plazo
• Fáciles de romper “sharing
relationship”
• Casos de uso
- Cross-account access
- Intra-account delegation
- Federación
Como iniciar
• Crear un rol
- Especifica en quien confías
- Describa que es lo que el rol
puede hacer
• Comparta el nombre del rol
• Utilice un ExternalID
cuando comparta con un
tercero
NOTA IMPORTANTE: Nunca comparta las credenciales.
38. prod@example.com
Acct ID: 111122223333
ddb-role
{ "Statement": [
{
"Action": [
"dynamodb:GetItem",
"dynamodb:BatchGetItem",
"dynamodb:Query",
"dynamodb:Scan",
"dynamodb:DescribeTable",
"dynamodb:ListTables"
],
"Effect": "Allow",
"Resource": "*"
}]}
dev@example.com
Acct ID: 123456789012
Authenticate with
Jeff access keys
Get temporary
security credentials
for ddb-role
Call AWS APIs
using temporary
security credentials
of ddb-role
{ "Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource":
"arn:aws:iam::111122223333:role/ddb-role"
}]}
{ "Statement": [
{
"Effect":"Allow",
"Principal":{"AWS":"123456789012"},
"Action":"sts:AssumeRole"
}]}
Como trabaja el compartir
ddb-role trusts IAM users from the AWS account
dev@example.com (123456789012)
Permissions assigned to Jeff granting him permission
to assume ddb-role in account B
IAM user: Jeff
Permissions assigned
to ddb-role
STS
External access
User
Login con Amazon
Google
Facebook
Open ID Connect
SAML
Authenticate with
Users tokens
40. 9. Utilice roles IAM para instancias de Amazon EC2
Beneficios
• Access Keys fáciles de
administrar en instancias EC2
• Rotación de llaves automáticas
• Asigne el menor privilegio a la
aplicación
• Completamente integrado con
AWS SDKs
• Completamente integrado con
AWS CLI
Como iniciar
• Cree un rol de IAM
• Asigne permisos al rol
• Lance instancias con el rol
• Si no utiliza SDK, firme todas
las peticiones a los servicios
AWS con las credenciales
temporales del rol
43. 10. Reduzca o elimine el uso de root
Beneficios
• Reduzca el mal uso potencial de
las credenciales
Como iniciar
• Pagina de “Security Credentials”
- Borrar “access keys”
- Active un dispositivo MFA
• Asegure que haya implementado
una contraseña robusta
44. Resumen de las mejores Practicas IAM
0. Usuarios – Genere usuarios individuales
1. Permisos – Otorgue el menor privilegio
2. Grupos – Administre los permisos mediante grupos
3. Condiciones – Restringa el acceso privilegiado con condiciones
4. Auditoria – Habilite AWS CloudTrail para obtener bitácoras de llamadas
API
5. Contraseñas – Configure una política de contraseñas robusta
6. Rotación – Rote/Borre las credenciales de seguridad regularmente
7. MFA – Habilite MFA para usuarios privilegiados
8. Comparta – Utilice roles IAM para compartir accesos
9. Roles – Utilice roles IAM para instancias EC2
10. Root – Reduzca o elimine el uso de root
45. Recursos Adicionales
• Pagina detallada de IAM: http://aws.amazon.com/iam
• Foros AWS: https://forums.aws.amazon.com/forum.jspa?forumID=76
• Documentación: http://aws.amazon.com/documentation/iam/
• Blog de Seguridad AWS : http://blogs.aws.amazon.com/security
• Pagina de AWS CloudTrail: http://aws.amazon.com/cloudtrail/
• Twitter: @AWSIdentity