Introducción a AWS IAM
En esta serie de videos hablaremos sobre AWS IAM, aprenderás:
- IAM Users, Groups, Roles
- Long-Term Credentials vs. Temporay Security Credentials
- Security Token Service
- Identity-based Policy vs. Resource-based Policy
- Permissions Boundary
- RBAC vs ABAC
- 4D Policies
AWS IAM Users & Groups
Comandos utilizados en clase
- Como configurar tu entorno local con Access Key de AWS IAM
$ aws configure
AWS Access Key ID [****************YIFD]: INGRESA TU ACCESS KEY
AWS Secret Access Key [****************tGic]: INGRESA TU SECRET ACCESS KEY
Default region name [us-east-1]: INGRESA LA REGION AWS
Default output format [json]: INGRESA EL FORMATO DE SALIDA 'json', 'yaml', 'table' 'none'
- Este archivo contiene las credenciales de acceso de cada perfil configurado.
$ cat ~/.aws/credentials
[default]
region = us-east-1
output = json
- Este archivo contiene configuraciones adicionales como la región y el formato de salida.
$ cat ~/.aws/config
[default]
aws_access_key_id = AKIA...
aws_secret_access_key = ksej...
- Combinar ambos para ver todos los perfiles
$ cat ~/.aws/credentials ~/.aws/config
[default]
aws_access_key_id = AKIA...
aws_secret_access_key = ksej...
[default]
region = us-east-1
output = json
- Configurar un nuevo perfil IAM en tu AWS CLI
$ aws configure --profile new-profile-name
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:
- Muestra las configuracion del perfil default
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************YIFD shared-credentials-file
secret_key ****************tGic shared-credentials-file
region us-east-1 config-file ~/.aws/config
- Muestra las configuracion del perfil que especifiques
$ aws configure list --profile new-profile-name
Name Value Type Location
---- ----- ---- --------
profile new-profile-name manual --profile
access_key ****************sss shared-credentials-file
secret_key ****************ssss shared-credentials-file
region sss config-file ~/.aws/config
- Muestra la lista de perfiles configurados en tu entorno local
$ aws configure list-profiles
default
new-profile-name
- Ejemplo si requieres administrar tus recursos aws desde un perfil específico
$ aws s3 ls --profile <nombre-de-perfil>
AWS IAM Role & Mejores prácticas para la Root Account
AWS STS, Resources-based Policy, Permissions Boundaries, RBAC vs ABAC, Políticas 4D
Comandos utilizados en clase
- Te permite saber con que identidad estas autenticado a tus recursos de AWS
$ aws sts get-caller-identity
- Te permite asumir un role IAM
$ aws sts assume-role --role-arn arn:aws:iam::123456789012:role/RoleName --role-session-name MySessionName
- Te permite obtener un token de seguridad con periodo de caducidad especificado
$ aws sts get-session-token --duration-seconds 3600
- Ejemplo de permiso que debe tener un principal para asumir un IAM Role
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::123456789012:role/RoleName"
}
]
}
- Ejemplo de un trust relationship que debe tener un IAM Role para ser asumido por
usr_dev1
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::431204497982:user/usr_dev1"
},
"Action": "sts:AssumeRole"
}
]
}
- Ejemplo de un Identity-based policy con permisos ABAC
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::sales-bucket/*",
"Condition": {
"StringEquals": {
"aws:RequestTag/department": "sales",
"aws:RequestTag/project": "projectX"
},
"IpAddress": {
"aws:SourceIp": "192.0.2.0/24"
}
}
}
]
}