AWS Summit Bogotá Track Avanzado: Mejores Prácticas de Seguridad para IAM (Identity and Access...

46
Mejores Practicas de Seguridad para IAM (Identity and Access Management) Jesus Bonequi Olvera Solutions Architect

Transcript of AWS Summit Bogotá Track Avanzado: Mejores Prácticas de Seguridad para IAM (Identity and Access...

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

La seguridad es nuestra

prioridad #1

La seguridad es una

responsabilidad compartida

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…

¿Cómo es que AWS obtiene su seguridad?

¿Cómo es que AWS obtiene su seguridad?

Las evidencias comprueban que AWS cumple

• Certificaciones

• Auditorias y & Certificación– Independientes por 3os

– Refrescados frecuentemente

– Disponibles para nuestros clientes

aws.amazon.com/compliance

Certificaciones y Approving Industry Bodies

Seguridad en IAM

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

Mejores practicas de IAM

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. UsuariosCrear usuarios individuales

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

Otorgue el menor privilegio

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. GruposAdministre los permisos con grupos

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. CondicionesRestringa los privilegios de acceso con condiciones

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. AuditoriaHabilite AWS CloudTrail para generar logs de las llamadas API

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

Demostracion

Administración de usuarios y permisos

5. ContraseñasConfigure una política de uso de contraseñas robusta

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. RotacionRote (o elimine) regularmente las credenciales de seguridad

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. MFAHabilite la autenticación multi factor para usuarios privilegiados

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. CompartirUtilice los roles IAM para compartir accesos

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

Google

Facebook

Open ID Connect

SAML

Authenticate with

Users tokens

9. RolesUtilice roles IAM para instancias de Amazon EC2

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

Demo

Administración de credenciales

10. Root Reduzca o elimine el uso de root

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

Muchas gracias