<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Terry Quispe Paniagua</title>
    <description>The latest articles on DEV Community by Terry Quispe Paniagua (@terry_cloud).</description>
    <link>https://dev.to/terry_cloud</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3614371%2F7804f481-6b8c-44c0-ab00-9e93e561a4bf.jpg</url>
      <title>DEV Community: Terry Quispe Paniagua</title>
      <link>https://dev.to/terry_cloud</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/terry_cloud"/>
    <language>en</language>
    <item>
      <title>🛡️AWS IAM Access Analyzer — Parte 1/4</title>
      <dc:creator>Terry Quispe Paniagua</dc:creator>
      <pubDate>Sun, 21 Jun 2026 01:14:43 +0000</pubDate>
      <link>https://dev.to/terry_cloud/aws-iam-access-analyzer-parte-14-22io</link>
      <guid>https://dev.to/terry_cloud/aws-iam-access-analyzer-parte-14-22io</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;¿Quién puede acceder realmente a tus recursos en AWS?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;En el post anterior hablamos de SCPs, RCPs y IAM Policies. Si no lo leíste, te recomiendo empezar por ahí porque este post construye sobre eso.&lt;/p&gt;

&lt;p&gt;Hoy quiero hacerte una pregunta incómoda:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"¿Puedes decirme, ahora mismo, qué identidades tienen acceso efectivo a este bucket S3?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No el acceso que &lt;em&gt;pensaste&lt;/em&gt; que configuraste. El acceso &lt;strong&gt;real&lt;/strong&gt;, considerando todas las políticas en juego.&lt;/p&gt;

&lt;p&gt;Si tardas más de 30 segundos en responder, este post es para ti.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4ac1j0nbbc957kae7ree.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4ac1j0nbbc957kae7ree.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;El problema con el acceso en AWS&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Cuando tienes una sola cuenta y cuatro usuarios, responder esa pregunta es fácil. Abres la consola, revisas las políticas y listo.&lt;/p&gt;

&lt;p&gt;Pero hay una diferencia importante entre dos cosas que suelen confundirse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Acceso esperado&lt;/strong&gt;: lo que crees que configuraste, suponiendo que sea correcto.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Acceso efectivo&lt;/strong&gt;: lo que AWS realmente permite después de evaluar todas las políticas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La brecha entre estas dos cosas es donde vive la mayoría de los incidentes de seguridad en AWS. No son ataques sofisticados. Son configuraciones que alguien dio por buenas porque "la IAM policy dice que sí" — sin considerar el resto de las capas.&lt;/p&gt;

&lt;p&gt;En el mundo real, un entorno AWS medianamente serio se parece más a esto:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10, 20, 50 o más cuentas dentro de una AWS Organization&lt;/li&gt;
&lt;li&gt;Decenas de roles que se asumen entre cuentas - en algunas ocasiones he visto miles -.&lt;/li&gt;
&lt;li&gt;SCPs aplicadas a nivel de OU que limitan lo que pueden hacer las identidades.&lt;/li&gt;
&lt;li&gt;RCPs que controlan quién puede acceder a tus recursos desde fuera.&lt;/li&gt;
&lt;li&gt;Resource-based policies en S3, KMS, SQS, SNS, etc.&lt;/li&gt;
&lt;li&gt;Permission Boundaries en algunos roles.&lt;/li&gt;
&lt;li&gt;Trust policies que definen quién puede asumir cada rol.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Y ahí es donde la cosa se complica de verdad.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;¿Qué determina realmente el acceso efectivo?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Cuando AWS evalúa si una acción está permitida, no se queda solo con la IAM policy que ves en el rol o usuario. Revisa todas las capas que aplican a esa solicitud y parte de una regla muy simple: si no hay un &lt;code&gt;Allow&lt;/code&gt;, el acceso está denegado; y si aparece un &lt;code&gt;Deny&lt;/code&gt; explícito, ese &lt;code&gt;Deny&lt;/code&gt; gana siempre.&lt;/p&gt;

&lt;p&gt;Dicho de forma simple, en una sola cuenta la evaluación se puede entender así:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;¿Existe un Deny explícito aplicable?
    └── Sí → DENEGADO. Fin.
    └── No → continuar

¿Existe algún Allow válido?
    └── Puede venir de una IAM policy o de una resource-based policy
    └── Si no existe → DENEGADO

¿Hay algún límite que recorte ese permiso?
    └── SCP
    └── RCP
    └── Permission Boundary
    └── Session Policy

Si hay Allow y ningún límite lo bloquea → PERMITIDO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La parte importante es esta: IAM policies y resource-based policies pueden conceder permisos, pero SCPs, RCPs, Permission Boundaries y Session Policies funcionan más como límites. No agregan permisos por sí solos; más bien definen hasta dónde puede llegar un permiso que ya existe.&lt;/p&gt;

&lt;p&gt;Resumido de forma práctica:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Acceso efectivo =
    permiso concedido
  - denies explícitos
  - límites organizacionales
  - boundaries o session policies aplicables
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si &lt;strong&gt;cualquiera&lt;/strong&gt; de estas capas dice "No", la acción está bloqueada. No importa que las demás capas parezcan permitirlo. Este es el punto que la gente entiende en teoría pero subestima en la práctica. En cross-account hay matices adicionales, porque AWS evalúa tanto la cuenta del principal como la cuenta donde vive el recurso. Pero la idea base se mantiene: cualquier deny explícito aplicable bloquea la acción. Puedes revisar el flujo de evaluación en:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//reference_policies_evaluation-logic_policy-eval-basics.html"&gt;Single account&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//reference_policies_evaluation-logic-cross-account.html"&gt;cross-account&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//reference_policies_evaluation-logic.html"&gt;Policy evaluation logic general&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El problema a escala: con múltiples cuentas, cientos o miles de roles, innumerables recursos, varias OUs con diferentes SCPs y RCPs, hacer este análisis a mano para cada recurso crítico es inviable. Y si no lo haces, no sabes realmente qué acceso tienen tus identidades.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Tres escenarios donde el acceso falla aunque "debería" funcionar&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Estos son los casos que más se repiten. Si has trabajado en entornos con Organizations, probablemente reconoces alguno.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Escenario 1: El admin que no puede hacer nada&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Un usuario tiene la política &lt;code&gt;AdministratorAccess&lt;/code&gt; en su cuenta. Intenta crear un bucket S3 en &lt;code&gt;sa-east-1&lt;/code&gt; y le da error de acceso denegado. No cambió nada. Todo funcionaba ayer.&lt;/p&gt;

&lt;p&gt;Lo que pasó: alguien en el equipo de plataforma aplicó una SCP a nivel de OU que restringe la creación de recursos a &lt;code&gt;us-east-1&lt;/code&gt; únicamente - algo muy habitual y recomendado -. El admin ve un &lt;code&gt;AccessDenied&lt;/code&gt;, pero también el motivo por el cual, ya que en el detalle de error se indica que la acción está vetada por una SCP - a veces no es tan detallado -.&lt;/p&gt;

&lt;p&gt;La SCP es un límite máximo. &lt;code&gt;AdministratorAccess&lt;/code&gt; dice "puede hacer todo", pero si la SCP dice "solo en us-east-1", el resultado es "puede hacer todo, solo en us-east-1".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ejemplo: Eliminación de objeto con restricción por SCP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhppdpxf4tfssi89325ls.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhppdpxf4tfssi89325ls.png" alt=" " width="799" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ejemplo: Eliminación de objeto por CLI
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmdswgz25d0y7qnodqzw1.png" alt=" " width="796" height="60"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Escenario 2: El bucket "público" que no lo es&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Un desarrollador configura un bucket S3 con una bucket policy que permite &lt;code&gt;s3:GetObject&lt;/code&gt; a &lt;code&gt;"Principal": "*"&lt;/code&gt;. Desde su cuenta local, el acceso funciona. Pero desde una cuenta externa de un proveedor, el acceso falla.&lt;/p&gt;

&lt;p&gt;Lo que pasó: hay una RCP a nivel de organización que exige que cualquier acceso a recursos de S3 venga de un principal con &lt;code&gt;aws:PrincipalOrgID&lt;/code&gt; igual al ID de la organización. El &lt;code&gt;"*"&lt;/code&gt; de la bucket policy no se limita a sí mismo — la RCP sí lo limita desde afuera.&lt;/p&gt;

&lt;p&gt;La RCP actúa sobre el recurso sin importar lo que diga la bucket policy. El desarrollador configuró el acceso "correctamente" según lo que entiende de S3, pero la capa organizacional lo restringe silenciosamente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Escenario 3: El rol cross-account que IAM permite pero S3 no&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Un rol en la Cuenta B tiene una IAM policy que permite &lt;code&gt;s3:GetObject&lt;/code&gt; sobre el bucket &lt;code&gt;arn:aws:s3:::datos-criticos/*&lt;/code&gt;. El equipo valida la policy, todo se ve bien. Pero cuando el rol intenta acceder al bucket, falla.&lt;/p&gt;

&lt;p&gt;Lo que pasó: la bucket policy en la Cuenta A (donde vive el bucket) no lista el rol de Cuenta B como Principal permitido. En acceso cross-account, tanto la IAM policy del rol como la resource-based policy del recurso deben permitir la acción de forma explícita. Una sola no alcanza.&lt;/p&gt;

&lt;p&gt;Este es uno de los errores más comunes con acceso cross-account: el equipo de Cuenta B configura sus políticas IAM perfectamente y asume que eso es suficiente. No lo es.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;¿Qué es IAM Access Analyzer y qué tipos existen?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;IAM Access Analyzer es el servicio de AWS que ayuda a identificar y revisar accesos sobre recursos e identidades. En vez de revisar políticas manualmente y cruzar capas en tu cabeza — lo que puede ser propenso a errores y muy complicado — , el analizador lo hace por ti y genera &lt;em&gt;findings&lt;/em&gt; — hallazgos sobre accesos que merecen revisión.&lt;/p&gt;

&lt;p&gt;Hay tres tipos de analizador, y es importante no confundirlos porque resuelven problemas distintos:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tipo&lt;/th&gt;
&lt;th&gt;¿Qué detecta?&lt;/th&gt;
&lt;th&gt;¿Tiene costo?&lt;/th&gt;
&lt;th&gt;¿Cuándo usarlo?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;External Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Recursos accesibles desde fuera de tu zona de confianza (otra cuenta, internet)&lt;/td&gt;
&lt;td&gt;Sin costo adicional&lt;/td&gt;
&lt;td&gt;Siempre. Es el punto de partida en cualquier cuenta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Internal Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Qué principals &lt;em&gt;dentro&lt;/em&gt; de tu org tienen acceso a recursos específicos, con permisos efectivos&lt;/td&gt;
&lt;td&gt;Pagado ($9 USD/recurso/región/mes)&lt;/td&gt;
&lt;td&gt;Recursos críticos: buckets, RDS o cluster snapshots, DynamoDB etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Unused Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Roles y usuarios con permisos concedidos que no han sido utilizados&lt;/td&gt;
&lt;td&gt;Pagado ($0.20 USD/rol o usuario/mes)&lt;/td&gt;
&lt;td&gt;Revisiones de least privilege, limpieza de accesos obsoletos&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;La confusión más común es querer usar &lt;strong&gt;Internal Access&lt;/strong&gt; para detectar accesos externos. No hace eso. Para eso existe &lt;strong&gt;External Access&lt;/strong&gt;, que además es gratuito.&lt;/p&gt;

&lt;p&gt;La novedad relevante que cubre esta serie es &lt;strong&gt;Internal Access&lt;/strong&gt;, una de las capacidades más recientes de IAM Access Analyzer, que permite analizar el permiso efectivo considerando SCPs, RCPs y resource policies en conjunto.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc980gse8k9mzsibrv24z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc980gse8k9mzsibrv24z.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;¿Por qué importa esto para seguridad?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Auditorías y cumplimiento (PCI-DSS, ISO 27001, SOC 2)&lt;/strong&gt;&lt;br&gt;
En una auditoría, alguien va a pedirte evidencia de quién tiene acceso a tus datos sensibles. Access Analyzer te da eso en formato exportable, con el detalle de qué acciones puede realizar cada identidad. En vez de revisar cien políticas a mano, tienes un reporte automatizado.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Least privilege de verdad&lt;/strong&gt;&lt;br&gt;
Es fácil escribir "aplicamos least privilege" en un documento de arquitectura. Es difícil demostrarlo. Con análisis de permisos efectivos puedes ver exactamente qué permisos tiene cada identidad sobre cada recurso, y limpiar lo que sobra. No lo que crees que sobra — lo que el analizador te muestra que sobra.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Detección de configuraciones erróneas antes de que las encuentre alguien más&lt;/strong&gt;&lt;br&gt;
Un rol con &lt;code&gt;"Resource": "*"&lt;/code&gt; donde debería tener un ARN específico. Una bucket policy que alguien amplió para una prueba y nunca revirtió. Un acceso cross-account que quedó abierto después de una migración. Estos hallazgos no generan alertas operacionales — el sistema funciona, el acceso existe, y nadie lo nota hasta que hay un incidente o una auditoría.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Esta serie da para más&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Mientras armaba este post me di cuenta de que IAM Access Analyzer no se puede explicar bien en una sola publicación sin hacerlo pesado - la verdad los conceptos de acceso en cloud son pesados si no se aterrizan correctamente.&lt;/p&gt;

&lt;p&gt;Por eso voy a separar la serie en tres partes mas una cuarta parte opcional como bonus con mcp: External Access, Internal Access y Unused Access. En cada una veremos el concepto, un caso práctico y un pequeño lab con evidencias, para aterrizarlo mejor y no quedarnos solo en la teoría.&lt;/p&gt;

&lt;p&gt;ADVERTENCIA.&lt;br&gt;
Algunos de los labs tendrán costos por lo que les pido precaución, lean antes y tengan controlado sus recursos.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;¿Qué viene en la Parte 2?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;En el siguiente post vamos al laboratorio. Vamos a:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configurar un analizador Internal Access a nivel de organización&lt;/li&gt;
&lt;li&gt;Crear tres roles con distintos niveles de acceso en una cuenta y un bucket en otra&lt;/li&gt;
&lt;li&gt;Agregar una SCP que bloquea una acción aunque IAM y la bucket policy la permitan&lt;/li&gt;
&lt;li&gt;Ver los findings de Access Analyzer y validar con CLI que el permiso efectivo es exactamente lo que el analizador reporta&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;💡 &lt;strong&gt;Reflexión:&lt;/strong&gt; ¿Alguna vez encontraste un rol con más acceso del que debería tener, después de creer que todo estaba bien configurado? Es más común de lo que parece — y casi siempre la diferencia está entre el acceso esperado y el acceso efectivo.&lt;/p&gt;

&lt;p&gt;🔜 &lt;strong&gt;Parte 2:&lt;/strong&gt; Lab completo de IAM Access Analyzer Internal Access con SCPs, cross-account y validación por CLI.&lt;/p&gt;

&lt;h1&gt;
  
  
  AWS #CloudSecurity #IAM #AccessAnalyzer #AWSCommunityBuilder #CloudGovernance #AWSOrganizations
&lt;/h1&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Referencias&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html" rel="noopener noreferrer"&gt;Policy evaluation logic&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic_policy-eval-basics.html" rel="noopener noreferrer"&gt;Single account policy evaluation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html" rel="noopener noreferrer"&gt;Cross-account policy evaluation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html" rel="noopener noreferrer"&gt;What is IAM Access Analyzer?&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-findings.html" rel="noopener noreferrer"&gt;IAM Access Analyzer findings&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-resources.html" rel="noopener noreferrer"&gt;IAM Access Analyzer supported resource types&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-create-internal.html" rel="noopener noreferrer"&gt;Create an IAM Access Analyzer internal access analyzer&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html" rel="noopener noreferrer"&gt;Service control policies - SCPs&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html" rel="noopener noreferrer"&gt;Resource control policies - RCPs&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://aws.amazon.com/iam/access-analyzer/pricing/" rel="noopener noreferrer"&gt;IAM Access Analyzer pricing&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>iam</category>
      <category>tutorial</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>🛡️ Entendiendo las Service Control Policies (SCPs) en AWS Organizations</title>
      <dc:creator>Terry Quispe Paniagua</dc:creator>
      <pubDate>Tue, 02 Dec 2025 03:47:50 +0000</pubDate>
      <link>https://dev.to/terry_cloud/-entendiendo-las-service-control-policies-scps-en-aws-organizations-40li</link>
      <guid>https://dev.to/terry_cloud/-entendiendo-las-service-control-policies-scps-en-aws-organizations-40li</guid>
      <description>&lt;h2&gt;
  
  
  1. Introducción
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ¿Qué problema resuelven las SCPs?
&lt;/h3&gt;

&lt;p&gt;Las SCPs, a diferencia de los permisos de IAM, no otorgan permisos, sino que los restringen. Popularmente llamados "guardrails" o "barandillas", son una herramienta clave para la gobernanza de AWS, así como también para fijar los lineamientos de seguridad y cumplimiento de la empresa.&lt;/p&gt;

&lt;p&gt;Antes de proseguir debemos entender unos conceptos previos:&lt;/p&gt;

&lt;h3&gt;
  
  
  IAM Policy
&lt;/h3&gt;

&lt;p&gt;Es un tipo de política de IAM que permite otorgar permisos a los usuarios y roles de AWS.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Organizations
&lt;/h3&gt;

&lt;p&gt;AWS Organizations es un servicio que permite administrar y gestionar de forma centralizada múltiples cuentas de AWS. Con Organizations puedes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Crear y gestionar cuentas de AWS (Account Management)&lt;/li&gt;
&lt;li&gt;Centralizar los costos de las cuentas de AWS (Billing)&lt;/li&gt;
&lt;li&gt;Gestionar los permisos de las cuentas de AWS junto a IAM Identity Center (Identity and Access Management)&lt;/li&gt;
&lt;li&gt;Aplicar políticas de seguridad a las cuentas de AWS (SCPs)&lt;/li&gt;
&lt;li&gt;Habilitar servicios multicuentas (Multi-account)&lt;/li&gt;
&lt;li&gt;Agrupar cuentas por Unidades Organizativas (Jerarquía de organización)&lt;/li&gt;
&lt;li&gt;Auditar entorno multicuentas (Audit)&lt;/li&gt;
&lt;li&gt;Compartir recursos en múltiples cuentas (Resource sharing)&lt;/li&gt;
&lt;li&gt;Automatizar aprovisionamiento de múltiples cuentas mediante CloudFormation (Multi-account)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Service Control Policies (SCPs)
&lt;/h2&gt;

&lt;p&gt;Es un tipo de política de AWS Organizations que permite restringir los permisos de las cuentas de AWS que pertenecen a la organización. Esta es una característica de AWS Organizations; existen otras políticas, pero nos centraremos en el tipo de servicio.&lt;/p&gt;

&lt;h3&gt;
  
  
  Estructura de una SCP
&lt;/h3&gt;

&lt;p&gt;La estructura de una SCP es la siguiente:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpigyuysqbv3i1o352f0y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpigyuysqbv3i1o352f0y.png" alt="SCP Syntax" width="512" height="690"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Elementos principales de una SCP:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Elemento&lt;/th&gt;
&lt;th&gt;¿Qué hace?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Statement&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Es el contenedor principal de una política. Puedes tener varios statements en una SCP (cuidado: hay un límite de caracteres).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Effect&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Define si el statement permite (&lt;code&gt;Allow&lt;/code&gt;) o bloquea (&lt;code&gt;Deny&lt;/code&gt;) acciones. &lt;strong&gt;Nota:&lt;/strong&gt; &lt;code&gt;Allow&lt;/code&gt; no permite condicionales.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Action&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Especifica qué acciones de AWS se permiten o bloquean (ej: &lt;code&gt;s3:PutObject&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Resource&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Indica a qué recursos de AWS aplica la política (ej: un bucket específico).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Condition&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;(Opcional) Agrega condiciones para que el statement aplique solo en ciertos casos.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NotAction&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lo opuesto a &lt;code&gt;Action&lt;/code&gt;: especifica acciones que quedan exentas de la SCP.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NotResource&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lo opuesto a &lt;code&gt;Resource&lt;/code&gt;: especifica recursos que quedan exentos de la SCP.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sid&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;(Opcional) Un nombre amigable para identificar el statement.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Version&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Define la versión del lenguaje de políticas (siempre usa &lt;code&gt;"2012-10-17"&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Comportamiento de una SCP
&lt;/h3&gt;

&lt;p&gt;Para entender mejor cómo funcionan las SCPs, podemos agrupar sus comportamientos en cuatro categorías clave:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Principios Básicos&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Naturaleza:&lt;/strong&gt; No otorgan permisos, solo los restringen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluación:&lt;/strong&gt; Un permiso solo se ejecuta si existe una política IAM que lo permita y una SCP que lo permita o no lo deniegue, en el caso de evaluación IAM y SCP. La evaluación final se encuentra en la &lt;a href="https://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/reference_policies_evaluation-logic_policy-eval-basics.html" rel="noopener noreferrer"&gt;documentación oficial de AWS&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Alcance: ¿A quién afecta?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cuentas Miembro:&lt;/strong&gt; Las SCPs restringen los permisos de todos los usuarios y roles, &lt;strong&gt;incluido el usuario root&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Administradores Delegados:&lt;/strong&gt; Sí están afectados, ya que residen en cuentas miembro.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Excepción Clave:&lt;/strong&gt; La &lt;strong&gt;Cuenta de Administración (Management Account)&lt;/strong&gt; NO se ve afectada por las SCPs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Interacción con otras Políticas&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IAM Deny:&lt;/strong&gt; Siempre tiene prioridad sobre cualquier SCP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SCP Deny:&lt;/strong&gt; Bloquea la acción explícitamente, incluso si IAM otorga &lt;code&gt;AdministratorAccess&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permission Boundaries:&lt;/strong&gt; La evaluación final requiere: &lt;strong&gt;IAM Allow + SCP Allow + Boundary Allow&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Excepciones Técnicas&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Service-Linked Roles:&lt;/strong&gt; No se pueden restringir con SCPs, ya que son necesarios para que los servicios de AWS funcionen correctamente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource-Based Policies:&lt;/strong&gt; No se ven afectadas por SCPs; los accesos externos a recursos (como un bucket S3) siguen funcionando si la política del recurso lo permite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usuarios Externos:&lt;/strong&gt; No se ven afectados, incluso si acceden a recursos dentro de una cuenta restringida.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ¿Dónde se aplican las SCPs?
&lt;/h3&gt;

&lt;p&gt;En AWS Organizations, las SCPs se aplican a las cuentas de AWS que pertenecen a la organización y también a las unidades organizativas. Una unidad organizativa es como un folder donde puedes agrupar cuentas de AWS.&lt;/p&gt;

&lt;p&gt;A continuación una vista de una jerarquía de organización en AWS Organizations:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbalcy273rg7fuy5l9gsp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbalcy273rg7fuy5l9gsp.png" alt="Image Structure Organizations" width="800" height="831"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Componentes de una jerarquía de organización:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cuenta raíz (Root):&lt;/strong&gt; Es la cuenta principal de la organización, generalmente la cuenta de AWS que se creó al crear la organización. &lt;strong&gt;Importante:&lt;/strong&gt; Aplicar una SCP a la cuenta raíz afecta a todas las cuentas de la organización sin excepción (mucho cuidado con esto).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unidades organizativas (OUs):&lt;/strong&gt; Son como folders donde puedes agrupar cuentas de AWS. Aplicar una SCP a una OU afecta a todas las cuentas que pertenecen a la OU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cuentas:&lt;/strong&gt; Son las cuentas de AWS que pertenecen a la organización. Aplicar una SCP a una cuenta afecta solo a esa cuenta.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; Las SCPs pueden aplicarse a múltiples cuentas por su característica de herencia.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  3. Laboratorio: Creación de SCPs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Costo del laboratorio:&lt;/strong&gt; $0&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Advertencia:&lt;/strong&gt; Nunca debes aplicar una SCP a la cuenta productiva ni a un entorno con cuentas productivas. Siempre usa cuentas de prueba para validar el funcionamiento de la SCP antes de aplicarlo en múltiples cuentas.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  A. Armando el laboratorio para probar SCPs
&lt;/h3&gt;

&lt;h4&gt;
  
  
  🔐 Requisitos previos
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Tener una cuenta AWS principal (payer) desde la cual crearás la Organización.&lt;/li&gt;
&lt;li&gt;Tener acceso administrativo a esa cuenta.&lt;/li&gt;
&lt;li&gt;No necesitas método de pago adicional para la segunda cuenta.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  ✅ Paso 1: Crear una Organización en AWS (si aún no está creada)
&lt;/h4&gt;

&lt;p&gt;1.1. Ingresa a la cuenta administradora (payer/root) de AWS.&lt;/p&gt;

&lt;p&gt;1.2. Ve al servicio &lt;strong&gt;AWS Organizations&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;1.3. Si todavía no tienes una organización:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Haz clic en &lt;strong&gt;Create Organization&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Confirmar creación de la organización.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🎉 Ahora tienes la capacidad de usar SCPs.&lt;/p&gt;

&lt;h4&gt;
  
  
  ✅ Paso 2: Crear una Unidad Organizativa (OU) para pruebas
&lt;/h4&gt;

&lt;p&gt;Las OU te ayudarán a aislar y probar SCPs sin afectar nada productivo o importante.&lt;/p&gt;

&lt;p&gt;2.1. En AWS Organizations, ve a &lt;strong&gt;AWS accounts&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;2.2. Selecciona la OU raíz (root) y haz clic en &lt;strong&gt;Actions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;2.3. Clic en &lt;strong&gt;Create new organizational unit (OU)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;2.4. Pon un nombre claro (ej: &lt;code&gt;lab-scp-test&lt;/code&gt;) y acepta.&lt;/p&gt;

&lt;h4&gt;
  
  
  ✅ Paso 3: Crear una cuenta miembro dentro de la OU
&lt;/h4&gt;

&lt;p&gt;Crearás una segunda cuenta AWS desde la cuenta administradora. Esta cuenta será tu "cuenta de pruebas" donde validarás las SCPs.&lt;/p&gt;

&lt;p&gt;3.1. Desde AWS Organizations, ve a &lt;strong&gt;AWS Accounts&lt;/strong&gt; → &lt;strong&gt;Add an AWS account&lt;/strong&gt; → &lt;strong&gt;Create an AWS account&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;3.2. Rellena:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Account name:&lt;/strong&gt; &lt;code&gt;lab-scp-member&lt;/code&gt; (o el nombre de tu elección, puedes cambiar el nombre a futuro)&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Email address:&lt;/strong&gt; Te aconsejo usar tu correo con el que creaste la cuenta administradora, pero con un alias de la siguiente manera:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; &amp;lt;tuemail_sin_@gmail.com&amp;gt;+labscp@gmail.com
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;Ejemplo:&lt;/strong&gt; Si tu correo es &lt;code&gt;pepito@gmail.com&lt;/code&gt;, tu segunda cuenta deberá ser: &lt;code&gt;pepito+labscp@gmail.com&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3.3. Clic en &lt;strong&gt;Create an AWS account&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  ✅ Paso 4: Mover la cuenta a la OU creada
&lt;/h4&gt;

&lt;p&gt;4.1. Selecciona la cuenta, clic en &lt;strong&gt;Actions&lt;/strong&gt; → &lt;strong&gt;Move AWS account&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;4.2. Elige la OU creada.&lt;/p&gt;

&lt;p&gt;4.3. Clic en &lt;strong&gt;Move AWS account&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  🔹 Configuración inicial de la cuenta miembro
&lt;/h4&gt;

&lt;p&gt;AWS enviará un correo para activar la cuenta. Necesitarás entrar a la cuenta para probar las SCPs. Para el primer ingreso lo harás con la cuenta root (podrías generar un ingreso mediante IAM Identity Center, pero se verá en otro artículo) y harás un reset de contraseña. Procura seguir las buenas prácticas de seguridad colocando MFA y una contraseña fuerte.&lt;/p&gt;

&lt;p&gt;Adicionalmente, necesitarás crear un usuario IAM con permisos de administrador, solo con propósitos de prueba, ya que no usaremos la root.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Guía para crear un usuario IAM:&lt;/strong&gt; &lt;a href="https://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/id_users_create.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/id_users_create.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Luego de crear el usuario IAM, procederás a ingresar a la cuenta miembro con el usuario IAM creado para realizar las pruebas de SCPs. Recuerda: es solo para pruebas. Las SCPs solo se adjuntarán y crearán en la cuenta administradora de la organización; no podrás ver la organización desde la cuenta miembro.&lt;/p&gt;

&lt;h3&gt;
  
  
  B. Creación de SCPs
&lt;/h3&gt;

&lt;h4&gt;
  
  
  ✅ Paso 1: Acceder a AWS Organizations
&lt;/h4&gt;

&lt;p&gt;1.1. Desde la consola de AWS, busca y selecciona &lt;strong&gt;Organizations&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;1.2. Asegúrate de estar en la cuenta raíz de la organización o en una cuenta con permisos de administración de la organización.&lt;/p&gt;

&lt;h4&gt;
  
  
  ✅ Paso 2: Crear la SCP
&lt;/h4&gt;

&lt;p&gt;2.1. En el menú lateral, selecciona &lt;strong&gt;Policies&lt;/strong&gt; → &lt;strong&gt;Service control policies&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;2.2. Haz clic en &lt;strong&gt;Create policy&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;2.3. Ingresa un nombre y descripción para tu política.&lt;/p&gt;

&lt;p&gt;2.4. Define el contenido de la política en formato JSON (ver ejemplos más adelante).&lt;/p&gt;

&lt;h3&gt;
  
  
  C. Vincular política SCP a una OU o cuenta
&lt;/h3&gt;

&lt;h4&gt;
  
  
  ✅ Paso 1: Vincular SCP a la OU de pruebas
&lt;/h4&gt;

&lt;p&gt;1.1. En &lt;strong&gt;AWS Organizations&lt;/strong&gt; → &lt;strong&gt;AWS accounts&lt;/strong&gt;, selecciona la OU objetivo, cuenta o folder raíz.&lt;/p&gt;

&lt;p&gt;1.2. Haz clic en &lt;strong&gt;Policies&lt;/strong&gt; → &lt;strong&gt;Service control policies&lt;/strong&gt; → &lt;strong&gt;Attach&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;1.3. Selecciona la SCP creada y haz clic en &lt;strong&gt;Attach policy&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  D. Prueba de SCP
&lt;/h3&gt;

&lt;p&gt;1.1. Ve a la cuenta miembro (cuenta de pruebas).&lt;/p&gt;

&lt;p&gt;1.2. Accede con el usuario IAM creado.&lt;/p&gt;

&lt;p&gt;1.3. Intenta realizar la acción que se definió en la SCP.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Ejemplos de SCP para control de recursos en AWS
&lt;/h2&gt;

&lt;p&gt;Nos basamos en una organización con estructura de OUs y cuentas de prueba, donde puedes aplicar estas SCPs para validar su funcionamiento.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ejemplo de jerarquía organizativa:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Root
└── OU: &amp;lt;root-ou&amp;gt;
    ├── Development
    │   ├── Sandbox Dev 01 (Cuenta)
    │   └── &amp;lt;deepracer-aft1&amp;gt; (Cuenta)
    ├── Management
    │   └── Administrator (Cuenta de administración)
    ├── Network
    │   └── Networking (Cuenta)
    └── Security
        ├── Audit (Cuenta)
        └── Log Archive (Cuenta)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; Estas SCPs se pueden aplicar a la OU raíz, a una OU específica o a cuentas individuales, según el alcance que necesites. Recuerda que las denegaciones prevalecen y no se aplican a la cuenta administradora.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  1️⃣ Denegar creación de buckets S3
&lt;/h3&gt;

&lt;p&gt;Evita que cualquier cuenta cree buckets S3:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2012-10-17"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Statement"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Sid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"DenyS3BucketCreation"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Effect"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Deny"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"s3:CreateBucket"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"*"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Aplicación:&lt;/strong&gt; Colocar en la OU raíz para afectar a todas las cuentas de prueba, bloqueando la creación de buckets S3.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣ Restringir regiones de despliegue en las cuentas de Development
&lt;/h3&gt;

&lt;p&gt;Evita que se utilicen regiones distintas a la permitida, dejando accesibles solo ciertos servicios esenciales:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2012-10-17"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Statement"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Effect"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Deny"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"NotAction"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"budgets:*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"cloudfront:*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"config:*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"ec2:DescribeRegions"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"ec2:DescribeTransitGateways"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"ec2:DescribeVpnGateways"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"iam:*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"networkmanager:*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"organizations:*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"route53:*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"s3:*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"shield:*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"sts:*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"support:*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"trustedadvisor:*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"waf:*"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Condition"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"StringNotEquals"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"aws:RequestedRegion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
                        &lt;/span&gt;&lt;span class="s2"&gt;"${REGION_NAME}"&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reemplaza&lt;/strong&gt; &lt;code&gt;${REGION_NAME}&lt;/code&gt; por la región autorizada (ejemplo: &lt;code&gt;"us-east-1"&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aplicación:&lt;/strong&gt; Útil para controlar costos y garantizar que recursos solo se desplieguen en regiones aprobadas. Dado que mencionan el alcance hacia las cuentas Development se vinculara a la OU Development que es el folder de esas cuentas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;descripcion:&lt;/strong&gt; En este caso se uso de NotAction para no afectar ciertos servicios de alcanza global, en este caso servicios como budgets, cloudfront, config, iam, networkmanager, organizations, route53, s3, shield, sts, support, trustedadvisor, waf no se veran afectados pero los demas si.&lt;/p&gt;

&lt;h3&gt;
  
  
  3️⃣ Restringir tipos de instancias RDS
&lt;/h3&gt;

&lt;p&gt;Evita que se creen instancias RDS que no correspondan a un tipo aprobado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2012-10-17"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Statement"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Sid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"DenyUnapprovedRDSTypes"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Effect"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Deny"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"rds:CreateDBInstance"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Condition"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"StringNotEquals"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"rds:DatabaseClass"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${INSTANCEDBTYPE}"&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reemplaza&lt;/strong&gt; &lt;code&gt;${INSTANCEDBTYPE}&lt;/code&gt; por el tipo de instancia aprobado (ejemplo: &lt;code&gt;"db.t3.medium"&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aplicación:&lt;/strong&gt; Garantiza estándares de arquitectura y control de costos en RDS.&lt;/p&gt;

&lt;h3&gt;
  
  
  4️⃣ Denegar escritura en buckets S3 fuera de la organización
&lt;/h3&gt;

&lt;p&gt;Evita que cualquier cuenta escriba en buckets S3 que no pertenezcan a la organización:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2012-10-17"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Statement"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Sid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"DenyS3WritesToUnauthorizedBuckets"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Effect"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Deny"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"s3:Put*"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Condition"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"StringNotEquals"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"aws:ResourceOrgID"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"[O-XXXXX]"&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reemplaza&lt;/strong&gt; &lt;code&gt;[O-XXXXX]&lt;/code&gt; por el ID de tu organización.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aplicación:&lt;/strong&gt; Útil para prevenir que los datos se escriban fuera de los buckets gestionados por tu organización, reforzando la seguridad y gobernanza de S3.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. SCPs que toda cuenta debería tener
&lt;/h2&gt;

&lt;p&gt;No existen SCPs que toda cuenta debería tener de forma universal, ya que cada organización tiene sus propias necesidades y requisitos. Sin embargo, bajo un modelo de seguridad básico, considero que las cuentas deberían tener al menos las siguientes SCPs:&lt;/p&gt;

&lt;h3&gt;
  
  
  🔐 5.1. Denegar la utilización de cuentas ROOT
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Descripción:&lt;/strong&gt; Evita que se realicen acciones críticas usando la cuenta raíz de AWS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beneficio:&lt;/strong&gt; Protege la cuenta administrativa principal de accesos accidentales o maliciosos.&lt;/p&gt;




&lt;h3&gt;
  
  
  🚪 5.2. Denegar la acción de salir de la organización
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Descripción:&lt;/strong&gt; Impide que las cuentas miembros abandonen la organización.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beneficio:&lt;/strong&gt; Mantiene la gobernanza centralizada y evita pérdidas de control sobre cuentas.&lt;/p&gt;




&lt;h3&gt;
  
  
  👤 5.3. Denegar acciones en IAM que no sean usuarios y roles específicos
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Descripción:&lt;/strong&gt; Restringe la creación o modificación de políticas, roles y permisos que no estén permitidos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beneficio:&lt;/strong&gt; Evita escalación de privilegios no controlada y mantiene la seguridad de la identidad.&lt;/p&gt;




&lt;h3&gt;
  
  
  🌍 5.4. Denegar regiones no utilizadas en la organización
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Descripción:&lt;/strong&gt; Bloquea la creación de recursos fuera de las regiones aprobadas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beneficio:&lt;/strong&gt; Controla costos y asegura consistencia operativa en regiones autorizadas.&lt;/p&gt;




&lt;h3&gt;
  
  
  📝 5.5. Denegar borrado y modificación de registros específicos
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Descripción:&lt;/strong&gt; Protege logs críticos de CloudTrail, Config u otros registros importantes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beneficio:&lt;/strong&gt; Garantiza trazabilidad y cumplimiento normativo.&lt;/p&gt;




&lt;h3&gt;
  
  
  🗄️ 5.6. Denegar borrado de buckets donde se guardan registros de auditoría
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Descripción:&lt;/strong&gt; Impide que se eliminen buckets S3 usados para almacenar logs de auditoría.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beneficio:&lt;/strong&gt; Asegura la integridad de los registros y evidencia de auditoría.&lt;/p&gt;




&lt;h3&gt;
  
  
  💰 5.7. Denegar servicios con alto coste no útiles para la organización
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Descripción:&lt;/strong&gt; Bloquea servicios como Redshift, SageMaker u otros que no estén aprobados.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beneficio:&lt;/strong&gt; Evita gastos innecesarios y recursos no autorizados.&lt;/p&gt;

&lt;p&gt;Aunque muchas de estas SCPs están enfocadas principalmente en gobernanza y control, también actúan como capas adicionales de seguridad, creando barreras que protegen la organización de errores, mal uso o accesos no deseados.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Conclusión
&lt;/h2&gt;

&lt;p&gt;Las Service Control Policies (SCPs) son una herramienta fundamental para establecer guardrails de seguridad, cumplimiento y gobernanza en AWS Organizations. A través de este artículo hemos aprendido:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Qué son las SCPs&lt;/strong&gt; y cómo se diferencian de las políticas IAM tradicionales&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cómo funcionan&lt;/strong&gt; y a quién afectan dentro de la organización&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dónde aplicarlas&lt;/strong&gt; en la jerarquía organizativa&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cómo crear un laboratorio&lt;/strong&gt; de pruebas sin costo para validar SCPs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ejemplos prácticos&lt;/strong&gt; de políticas comunes para controlar recursos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recomendaciones básicas&lt;/strong&gt; de SCPs que toda organización debería considerar&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recuerda siempre probar tus SCPs en entornos de prueba antes de aplicarlas en producción, ya que una política mal configurada puede bloquear operaciones críticas. Las SCPs son restrictivas por naturaleza: no otorgan permisos, solo los limitan.&lt;/p&gt;

&lt;p&gt;Con una implementación cuidadosa, las SCPs te permitirán mantener el control centralizado de tu entorno multi-cuenta, reducir riesgos de seguridad y optimizar costos operativos.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Bonus RedTeam
&lt;/h2&gt;

&lt;p&gt;Hemos hablado bastante de SCPs, pero ahora comprendes que tan importante es la management account para controlar todo el entorno. Si alguien tiene acceso no autorizado a la management account es lo mas peligroso que puede pasar, como recordaras estan excentas de las SCPs y puedes tomar acciones en las cuentas miembros desde crearlas, cerrarlas o expulsarlas de la organización. AWS organizations no es solo politicas de organización, es un servicio que integra muchos otro servicio de seguridad que veremos mas adelante.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Pregunta de reflexión final
&lt;/h2&gt;

&lt;p&gt;¿Qué tan seguro crees que es tu entorno multi-cuenta? ¿Qué medidas adicionales consideras importantes para mejorar la seguridad de tu organización?&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;¡Ahora es tu turno de implementar SCPs en tu organización!&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Documentación y Referencias
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/reference_policies_evaluation-logic_policy-eval-basics.html" rel="noopener noreferrer"&gt;AWS IAM - Lógica de evaluación de políticas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/es_es/organizations/latest/userguide/orgs_tutorials_basic.html" rel="noopener noreferrer"&gt;AWS Organizations - Tutorial básico&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/es_es/organizations/latest/userguide/orgs_manage_policies_scps.html" rel="noopener noreferrer"&gt;AWS Organizations - Gestión de Service Control Policies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws-samples.github.io/threat-technique-catalog-for-aws/Techniques/T1666.A002.html" rel="noopener noreferrer"&gt;AWS Threat Technique Catalog - Técnicas de amenazas en Organizations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples_general.html" rel="noopener noreferrer"&gt;AWS Organizations - Ejemplos de SCPs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>management</category>
      <category>security</category>
    </item>
    <item>
      <title>AWS Policy Deep Dive</title>
      <dc:creator>Terry Quispe Paniagua</dc:creator>
      <pubDate>Sun, 23 Nov 2025 23:37:11 +0000</pubDate>
      <link>https://dev.to/terry_cloud/aws-policy-deep-dive-5e78</link>
      <guid>https://dev.to/terry_cloud/aws-policy-deep-dive-5e78</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Parte 1: ¿Crees que tus datos están seguros solo con IAM? Hablemos de SCPs y RCPs.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;🛡️ La seguridad en la nube requiere una estrategia de defensa en profundidad. 🛡️&lt;br&gt;
Cuando empecé en AWS, pensaba que con IAM bastaba. Pero al profundizar, me di cuenta de la importancia de capas adicionales como las SCPs y RCPs.&lt;/p&gt;

&lt;p&gt;Entender la diferencia entre&amp;nbsp;&lt;strong&gt;Identidad&lt;/strong&gt;,&amp;nbsp;&lt;strong&gt;Recurso&lt;/strong&gt;&amp;nbsp;y&amp;nbsp;&lt;strong&gt;Control Organizacional&lt;/strong&gt;&amp;nbsp;es vital para proteger nuestros entornos. No es solo "dar permisos", es saber&amp;nbsp;&lt;em&gt;dónde&lt;/em&gt;&amp;nbsp;aplicarlos para garantizar el menor privilegio y la máxima seguridad.&lt;/p&gt;

&lt;p&gt;Aquí les comparto mi guía mental para no perderse y saber identificar cuando podemos o debemos usar cada una de estas.&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣ Identity-based Policies (IAM Policies)
&lt;/h3&gt;

&lt;p&gt;👉&amp;nbsp;&lt;strong&gt;El "Quién puede hacer qué"&lt;/strong&gt;&amp;nbsp;Son las más comunes. Se adjuntan a Usuarios, Grupos o Roles. &lt;br&gt;
📝&amp;nbsp;&lt;strong&gt;Ejemplo:&lt;/strong&gt;&amp;nbsp;Un usuario de operaciones necesita iniciar o detener instancias EC2s, pero no puede crear, terminar ni modificar instancias.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Acción:&lt;/strong&gt;&amp;nbsp;Crear una Policy que permita&amp;nbsp;&lt;code&gt;ec2:StartInstances&lt;/code&gt;&amp;nbsp; y &lt;code&gt;ec2:StopInstances&lt;/code&gt; en la tabla de "Productos".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resultado:&lt;/strong&gt;&amp;nbsp;Si intenta modificar o eliminar la instancia, AWS le dice "No".&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2️⃣ Resource-based Policies
&lt;/h3&gt;

&lt;p&gt;👉&amp;nbsp;&lt;strong&gt;El "Quién puede tocar ESTO"&lt;/strong&gt;&amp;nbsp;Aquí la regla vive en el recurso mismo (S3 Bucket, SQS, KMS Key), no en el usuario. Son vitales para accesos&amp;nbsp;&lt;em&gt;Cross-Account&lt;/em&gt; pero no restringidos a ellos. 📝&amp;nbsp;&lt;strong&gt;Ejemplo:&lt;/strong&gt;&amp;nbsp;Tienes un Bucket S3 de logs centralizados.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Acción:&lt;/strong&gt;&amp;nbsp;Colocas una Bucket Policy que dice: "Permitir&amp;nbsp;&lt;code&gt;s3:PutObject&lt;/code&gt;&amp;nbsp;a la cuenta de Producción (Account B)".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resultado:&lt;/strong&gt;&amp;nbsp;La cuenta B puede escribir logs ahí sin tener un usuario creado en tu cuenta de logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3️⃣ Service Control Policies (SCPs)
&lt;/h3&gt;

&lt;p&gt;👉&amp;nbsp;&lt;strong&gt;Las "Reglas de la Casa" (Límites de Identidad, popularmente guardrail o barandilla de seguridad)&lt;/strong&gt;&amp;nbsp;Aquí es donde muchos se confunden. Las SCPs&amp;nbsp;&lt;strong&gt;NO&lt;/strong&gt;&amp;nbsp;dan permisos. Solo definen el&amp;nbsp;&lt;em&gt;máximo&lt;/em&gt;&amp;nbsp;permiso posible. Si la SCP dice "No", no importa si tienes AdminAccess, es un "No". 📝&amp;nbsp;&lt;strong&gt;Ejemplo:&lt;/strong&gt;&amp;nbsp;Seguridad Compliance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Acción:&lt;/strong&gt;&amp;nbsp;Aplicas una SCP en la raíz de tu Organización que niega&amp;nbsp;&lt;code&gt;ec2:RunInstances&lt;/code&gt;&amp;nbsp;en cualquier región que no sea&amp;nbsp;&lt;code&gt;us-east-1&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - &lt;strong&gt;Resultado:&lt;/strong&gt;&amp;nbsp;Aunque seas Admin, si intentas levantar un servidor en Tokyo, fallará.
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &amp;nbsp;Resource Control Policies (RCPs)
&lt;/h3&gt;

&lt;p&gt;👉&amp;nbsp;&lt;strong&gt;El "Perímetro de Datos" (Límites de Recurso)&lt;/strong&gt;&amp;nbsp;Funcionan como las SCPs, pero enfocadas en restringir el acceso a tus&amp;nbsp;&lt;strong&gt;recursos&lt;/strong&gt;, sin importar quién sea el que llama (incluso si es externo). 📝&amp;nbsp;&lt;strong&gt;Ejemplo:&lt;/strong&gt;&amp;nbsp;Data Perimeter estricto.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Acción:&lt;/strong&gt;&amp;nbsp;Creas una RCP que dice: "Nuestros Buckets S3 solo pueden ser accedidos por&amp;nbsp;&lt;em&gt;Principals&lt;/em&gt;&amp;nbsp;que pertenezcan a nuestra Organización (PrincipalOrgID)".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resultado:&lt;/strong&gt;&amp;nbsp;Si alguien configura por error un Bucket como "Público" o intenta darle acceso a una cuenta externa de un proveedor, la RCP lo bloquea automáticamente. Ideal para prevenir ataques de exfiltración de datos&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &amp;nbsp;Resumen
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tipo de Política&lt;/th&gt;
&lt;th&gt;Se aplica a...&lt;/th&gt;
&lt;th&gt;Función Principal&lt;/th&gt;
&lt;th&gt;¿Cuándo usarlo?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IAM Policy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Usuario/Rol/Grupo&lt;/td&gt;
&lt;td&gt;Otorgar permisos&lt;/td&gt;
&lt;td&gt;Para otorgar permisos a usuarios, grupos o roles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Resource Policy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;S3, SQS, etc.&lt;/td&gt;
&lt;td&gt;Otorgar acceso (incluso externo)&lt;/td&gt;
&lt;td&gt;Para definir quien puede acceder a un recurso&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SCP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cuenta AWS (excepto cuenta administradora de la organización), Unidades Org&lt;/td&gt;
&lt;td&gt;Restringir permisos máximos (Identidad)&lt;/td&gt;
&lt;td&gt;Para establecer límites máximos sobre las identidades&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RCP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Recursos de la Org, excepto recursos de la cuenta administradora de la organización&lt;/td&gt;
&lt;td&gt;Restringir acceso máximo (Recurso)&lt;/td&gt;
&lt;td&gt;Para establecer límites máximos sobre sobre quien accede a tus datos&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  🔥 Bonus: Perspectiva Red Team
&lt;/h3&gt;

&lt;p&gt;Entender IAM, SCPs y RCPs no solo es vital para proteger tu cuenta y organización, también es un componente clave para reducir la superficie de ataque.&lt;/p&gt;

&lt;p&gt;Por ejemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Escenario de Red Team:&lt;/strong&gt; un atacante intenta asumir roles o crear usuarios para escalar privilegios.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SCPs bloquean el movimiento lateral:&lt;/strong&gt; aunque tenga AdminAccess en una cuenta hija, no podrá ejecutar acciones prohibidas por la SCP a nivel de Organización (ej: &lt;code&gt;organizations:LeaveOrganization&lt;/code&gt;, &lt;code&gt;iam:CreateUser&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;RCPs evitan exfiltración de datos:&lt;/strong&gt; un bucket mal configurado no permite accesos de cuentas externas aunque el atacante tenga privilegios en otra parte.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Conclusión:&lt;/strong&gt; conocer y aplicar correctamente estas políticas es &lt;strong&gt;como poner murallas antes de que alguien llegue al nucleo de tu entorno&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 Pregunta de reflexión: ¿por qué es un riesgo crítico desplegar recursos productivos o mantener usuarios activos operando directamente en la cuenta administradora de la organización o también llamado Payer Account?&lt;/p&gt;

&lt;p&gt;🔜&amp;nbsp;&lt;strong&gt;En el próximo post:&lt;/strong&gt;&amp;nbsp;Profundizaremos en las&amp;nbsp;&lt;strong&gt;SCPs&lt;/strong&gt;, cuales son las SCPs mas relevantes que toda cuenta debería tener y cómo configurarlas correctamente para dormir tranquilos.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>security</category>
    </item>
  </channel>
</rss>
