# Check-Up AWS de Micro SMB · rol de SOLO LECTURA · v0.1 · 08-oct-2026
#
# Qué crea: UN rol de IAM en tu cuenta, con las dos políticas gestionadas de auditoría de
# Amazon (SecurityAudit y ViewOnlyAccess) y nada más. Ninguna de las dos permite crear,
# cambiar ni borrar recursos, ni leer el contenido de tus datos (objetos de S3, filas de
# bases de datos, secretos): permiten ver cómo está configurada la cuenta.
#
# Quién puede usarlo: solo UN rol concreto de la cuenta de Micro SMB (parámetro
# MicroSMBPrincipalArn; ni la cuenta entera ni ningún otro usuario), y solo si presenta el
# identificador externo (parámetro ExternalId) que te damos por correo y que únicamente
# conocemos tú y nosotros.
#
# Cómo se quita: borra el stack cuando termine el Check-Up. Con el stack se va el rol.
#
# Se publica en https://microsmb.ai/check-up-aws/rol-solo-lectura.yaml desde
# ops/microsmb-web/rol-solo-lectura.yaml (ops/web/genera-microsmb.py lo copia tal cual).
AWSTemplateFormatVersion: "2010-09-09"
Description: >-
  Micro SMB Check-Up AWS: rol de solo lectura (SecurityAudit + ViewOnlyAccess) que solo puede
  asumir la cuenta de Micro SMB con el identificador externo acordado. Borra el stack al terminar.

Parameters:
  ExternalId:
    Type: String
    Description: Identificador externo que te ha enviado Micro SMB (entre 12 y 64 caracteres).
    MinLength: 12
    MaxLength: 64
    AllowedPattern: "^[A-Za-z0-9+=,.@:/_-]+$"
    ConstraintDescription: "Letras, numeros y los signos + = , . @ : / _ - ; entre 12 y 64 caracteres."
  MicroSMBPrincipalArn:
    Type: String
    Description: El rol de Micro SMB, S.L. que hace el Check-Up. No lo cambies salvo que te lo pidamos por escrito.
    Default: "arn:aws:iam::858766040869:role/MicroSMB-CheckUp-Auditor"
    AllowedPattern: "^arn:aws:iam::[0-9]{12}:role/[A-Za-z0-9+=,.@_/-]+$"
    ConstraintDescription: ARN de un rol de IAM (arn:aws:iam::<cuenta>:role/<nombre>).
  RoleName:
    Type: String
    Description: Nombre del rol que se crea en tu cuenta.
    Default: MicroSMBCheckUpSoloLectura
    AllowedPattern: "^[A-Za-z0-9+=,.@_-]{1,64}$"

Resources:
  CheckUpRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName:
        Ref: RoleName
      Description: Micro SMB Check-Up AWS - solo lectura. Borrar el stack al terminar.
      MaxSessionDuration: 3600
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Sid: SoloMicroSMBConIdentificadorExterno
            Effect: Allow
            Principal:
              AWS:
                Ref: MicroSMBPrincipalArn
            Action: sts:AssumeRole
            Condition:
              StringEquals:
                sts:ExternalId:
                  Ref: ExternalId
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/SecurityAudit
        - arn:aws:iam::aws:policy/job-function/ViewOnlyAccess
      Tags:
        - Key: Proposito
          Value: MicroSMB-CheckUp-SoloLectura
        - Key: Borrar
          Value: al-terminar-el-check-up

Outputs:
  RoleArn:
    Description: Envianos este ARN por correo cuando el stack este creado.
    Value:
      Fn::GetAtt: [CheckUpRole, Arn]
  ComoRetirarlo:
    Description: Como se retira el acceso.
    Value: Borra este stack (CloudFormation > Stacks > Delete). El rol desaparece con el.
