Crear una organización AWS con unas 28 cuentas bajo gobernanza centralizada, sin Control Tower, pero aplicando:
- AWS Organizations
- Service Control Policies (SCPs)
- Buenas prácticas de logging, auditoría y aislamiento
Root Organization
│
├── Core OU
│ ├── Management Account (cuenta raíz)
│ ├── Log Archive Account
│ └── Audit Account
│
├── Sandbox OU
│ ├── Alumno01 Account
│ ├── Alumno02 Account
│ └── ...
│ └── Alumno28 Account
│
└── SharedServices OU
├── Networking Account
└── Tools Account
En la consola de AWS (cuenta raíz):
-
Ve a AWS Organizations → https://console.aws.amazon.com/organizations
-
Si no tienes una organización, elige “Create organization”
- Tipo: Con AWS Organizations All features (recomendado)
Esto crea una Management Account (root).
Crea las siguientes:
CoreSharedServicesSandbox
Desde la consola:
AWS Organizations → Organizational units → Create new OU
Tienes dos opciones:
- A) Crear nuevas cuentas directamente desde Organizations (te pedirá un correo único por cuenta)
- B) Invitar cuentas existentes (si ya existen cuentas separadas para alumnos)
Recomendación:
-
Crea al menos 3 cuentas base:
LogArchiveAuditTools
-
Luego, una por alumno bajo
Sandbox OU.
Las SCPs definen qué se puede o no puede hacer en las cuentas, incluso si el usuario es administrador. Aquí algunos ejemplos prácticos 👇
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyCloudTrailDelete",
"Effect": "Deny",
"Action": [
"cloudtrail:DeleteTrail",
"cloudtrail:StopLogging",
"config:DeleteConfigurationRecorder",
"config:StopConfigurationRecorder"
],
"Resource": "*"
}
]
}{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyRegionsExceptOregon",
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": "us-west-2"
}
}
}
]
}{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyRootActions",
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"StringLike": {
"aws:PrincipalArn": "arn:aws:iam::*:root"
}
}
}
]
}Asocia estas SCPs:
- A la OU
CoreySandbox - No las pongas en la raíz directamente (para no bloquear la Management Account)
Crea en tu cuenta LogArchive:
-
Un bucket S3 llamado
org-central-logs -
Configura en cada cuenta (puedes automatizar con CloudFormation StackSets):
- Un CloudTrail multi-región que envíe logs al bucket.
- AWS Config con destino al mismo bucket.
En cada cuenta (mediante CloudFormation StackSets o manualmente):
- Crea un rol IAM como este:
Resources:
AuditRole:
Type: AWS::IAM::Role
Properties:
RoleName: OrganizationAuditRole
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
AWS: "arn:aws:iam::<AUDIT_ACCOUNT_ID>:root"
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/SecurityAuditEsto permite que desde la cuenta Audit puedas entrar con AssumeRole a las demás cuentas para revisar configuración.
Ejemplo CLI:
aws organizations create-account \
--email "alumno01@ulsa.edu.mx" \
--account-name "Alumno01" \
--role-name "OrganizationAccountAccessRole"Esto puede automatizarse en un bucle para 28 alumnos.
Tendrás una estructura gobernada, liviana y rápida, sin Control Tower, con:
- Separación clara de cuentas.
- SCPs que aplican políticas globales.
- Auditoría y logging centralizados.
- Menor tiempo de despliegue (<2 horas para 28 cuentas con scripts o CLI).