Mejores Practicas de Seguridad
para IAM (Identity and Access
Management)
Jesus Bonequi Olvera
Solutions Architect
Agenda
• Seguridad en AWS
• Resumen de IAM
• Mejores practicas de IAM para incrementar la
seguridad de su infraestructura en la nube
• Demostracion
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
¿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…
Las evidencias comprueban que AWS cumple
• Certificaciones
• Auditorias y & Certificación– Independientes por 3os
– Refrescados frecuentemente
– Disponibles para nuestros clientes
aws.amazon.com/compliance
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
Los 10 mejores practicas (bueno 11)
0. Usuarios
1. Permisos
2. Grupos
3. Condiciones
4. Auditoria
5. Contraseñas
6. Rotación
7. MFA
8. Compartir
9. Roles
10.Root
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
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!
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
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
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.
SS
L
{"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.
So
urc
eIP
{"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”.Ta
gs
{ "Sid": "ThisBitGrantsAccessToResourcesForTerminateInstances", "Effect": "Allow", "Action":"ec2:TerminateInstances", "Resource": "*", "Condition": { "StringEquals": {"ec2:ResourceTag/Environment": "Dev"} } }
{ "Sid": "ThisBitGrantsAccessToResourcesForTerminateInstances", "Effect": "Allow", "Action":"ec2:TerminateInstances", "Resource": "*", "Condition": { "StringEquals": {"ec2:ResourceTag/Environment": "Dev"} } }
{ "Sid": "ThisBitGrantsAccessToResourcesForTerminateInstances", "Effect": "Allow", "Action":"ec2:TerminateInstances", "Resource": "*", "Condition": { "StringEquals": {"ec2:ResourceTag/Environment": "Dev"} } }
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
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
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
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
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}"
}]
}
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
7. Habilite MFA para usuarios
privilegiadosBeneficios
• 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
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 “sharingrelationship”
• 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 ExternalIDcuando comparta con un tercero
NOTA IMPORTANTE: Nunca comparta las credenciales.
[email protected] ID: 111122223333
ddb-role
{ "Statement": [{
"Action": ["dynamodb:GetItem","dynamodb:BatchGetItem","dynamodb:Query","dynamodb:Scan","dynamodb:DescribeTable","dynamodb:ListTables"
],"Effect": "Allow","Resource": "*"
}]}
[email protected] 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
[email protected] (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
Open ID Connect
SAML
Authenticate with
Users tokens
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
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
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
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