AWS Identity and Access Management
Guía del usuario

Ejemplo de escenarios para utilizar datos del último servicio al que se ha accedido

Puede utilizar datos del último servicio al que se ha accedido para tomar decisiones sobre los permisos que concede a las entidades de IAM o las entidades de AWS Organizations. Para obtener más información, consulte Refinado de permisos con datos de los últimos servicios a los que se ha accedido.

nota

Antes de ver los datos de acceso de una entidad o una política en IAM o AWS Organizations, asegúrese de comprender el período de notificación, las entidades notificadas y los tipos de política evaluados para los datos. Para obtener más información, consulte Cosas que debe saber.

Es responsabilidad del administrador elegir la accesibilidad y el principio de privilegios mínimos apropiado para su empresa.

Uso de datos para reducir permisos para un grupo de IAM

Puede utilizar datos del último servicio al que se ha accedido para reducir los permisos de grupo de IAM a fin de incluir solo los servicios que los usuarios necesitan. Este método es un importante paso en la concesión de privilegios mínimos en un nivel de servicio.

Por ejemplo, Paulo Santos es el administrador encargada de definir los permisos de usuarios de AWS para Example Corp. Esta empresa acaba de empezar a utilizar AWS y el equipo de desarrollo de software aún no se ha definido los servicios de AWS que utilizará. Paulo quiere dar el equipo permiso para obtener acceso solo a los servicios que necesitan, pero como aún no se ha definido, les proporciona temporalmente permisos de usuario avanzado. A continuación, utiliza datos de los últimos servicios a los que se ha accedido para reducir el grupo de permisos.

Paulo crea una política administrada denominada ExampleDevelopment utilizando el siguiente texto JSON. A continuación, lo asocia a un grupo denominado Development y añade todos los desarrolladores al grupo.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessToAllServicesExceptPeopleManagement", "Effect": "Allow", "NotAction": [ "iam:*", "organizations:*" ], "Resource": "*" }, { "Sid": "RequiredIamAndOrgsActions", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:DeleteServiceLinkedRole", "iam:ListRoles", "organizations:DescribeOrganization" ], "Resource": "*" } ] }

Paulo decide esperar 90 días antes de ver los datos de los últimos servicios a los que se ha accedido del grupo Development utilizando la Consola de administración de AWS. Ve la lista de servicios a los que han accedido los miembros del grupo. Descubre que los usuarios accedieron a cinco servicios la semana pasada: AWS CloudTrail, Amazon CloudWatch Logs, Amazon EC2, AWS KMS y Amazon S3. Accedieron a otros servicios cuando estaban evaluando por primera vez AWS y desde entonces no lo hicieron.

Paulo decide reducir los permisos de la política para incluir solo los cinco servicios y las acciones de IAM y Organizaciones necesarias. Edita la política de ExampleDevelopment con el siguiente texto JSON.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessToListedServices", "Effect": "Allow", "Action": [ "s3:*", "kms:*", "cloudtrail:*", "logs:*", "ec2:*" ], "Resource": "*" }, { "Sid": "RequiredIamAndOrgsActions", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:DeleteServiceLinkedRole", "iam:ListRoles", "organizations:DescribeOrganization" ], "Resource": "*" } ] }

Para reducir aún más los permisos, Paulo puede ver los eventos de la cuenta en el historial de eventos de AWS CloudTrail. Allí puede ver información de eventos detallada que puede utilizar para reducir los permisos de la política para incluir solo las acciones y los recursos que los desarrolladores necesitan. Para obtener más información, consulte Ver eventos de CloudTrail en la consola de CloudTrail en la Guía del usuario de AWS CloudTrail.

Uso de datos para reducir permisos para un usuario de IAM

Puede utilizar datos de los últimos servicios a los que se ha accedido para reducir los permisos para un usuario individual de IAM.

Por ejemplo, Martha Rivera es una administradora de TI responsable de garantizar que las personas de su empresa no tengan demasiados permisos de AWS. En el marco de una comprobación de seguridad periódica, revisa los permisos de todos los usuarios de IAM. Uno de ellos es un desarrollador de aplicaciones llamado Nikhil Jayashankar, que previamente trabajaba como ingeniero de seguridad. Debido al cambio en los requisitos de trabajo, Nikhil es miembro del grupo app-dev y del grupo security-team. El grupo app-dev para su nuevo trabajo concede permisos a varios servicios, incluidos Amazon EC2, Amazon EBS, Auto Scaling, Route 53 y Elastic Transcoder. El grupo security-team para su trabajo anterior concede permisos para IAM y CloudTrail.

Como administradora, Martha inicia sesión en la consola de IAM y elige Users (Usuarios), selecciona el nombre nikhilj y elige la pestaña Access Advisor.

Martha revisa la columna Last Accessed (Último acceso) y se da cuenta de que Nikhil no ha accedido recientemente a IAM, CloudTrail, Route 53, Amazon Elastic Transcoder ni a una serie de otros servicios de AWS. Dentro de la empresa, Martha confirma que Nikhil ya no necesita acceder a IAM y CloudTrail porque ya no es miembro del equipo de seguridad interna.

Martha ya está listo para actuar en los datos de los últimos servicios a los que se ha accedido. Sin embargo, a diferencia del grupo del ejemplo anterior, un usuario de IAM como nikhilj podría estar sujeto a varias políticas y ser miembro de varios grupos. Martha debe continuar con precaución para evitar interrumpir de forma inadvertida el acceso de nikhilj u otros los miembros del grupo. Además de descubrir el acceso que Nikhil debe tener, debe determinar cómo está recibiendo estos permisos.

Martha elige la pestaña Permissions (Permisos), donde ve qué políticas están asociadas directamente a nikhilj y las asociadas desde un grupo. Amplía cada política y ve el resumen de la política para saber qué política permite el acceso a los servicios que Nikhil no está utilizando:

  • IAM: la política administrada IAMFullAccess AWS se asigna directamente a nikhilj y se asigna al grupo security-team.

  • CloudTrail: la política administrada de AWS AWSCloudTrailReadOnlyAccess se asigna al grupo security-team.

  • Route 53: la política administrada por el cliente App-Dev-Route53 se asocia al grupo app-dev.

  • Elastic Transcoder: la política administrada por el cliente App-Dev-ElasticTranscoder se asocia al grupo app-dev.

Martha decide eliminar la política administrada IAMFullAccess AWS asociada directamente a nikhilj. También elimina la pertenencia de Nikhil al grupo security-team. Estas dos acciones eliminan el acceso innecesarios a IAM y CloudTrail.

Los permisos de Nikhil para acceder a Route 53 y Elastic Transcoder los concede el grupo app-dev. Aunque Nikhil no está utilizando dichos servicios, otros miembros del grupo podrían. Martha revisa los datos de los últimos servicios a los que se ha accedido del grupo app-dev y descubre que varios miembros han accedido recientemente a Route 53, pero ningún miembro del grupo ha accedido a Elastic Transcoder en el último año. Elimina política administrada por el cliente App-Dev-ElasticTranscoder del grupo.

Martha a continuación, revisa los datos de los últimos servicios a los que se ha accedido de la política administrada por el cliente App-Dev-ElasticTranscoder. Descubre que la política no está asociada a ninguna otra entidad de IAM. Investiga dentro de su empresa para asegurarse de que la política no se necesitará en el futuro y, a continuación, la elimina.

Uso de datos antes de eliminar recursos de IAM

Puede utilizar datos de los últimos servicios a los que se ha accedido antes de eliminar un recurso de IAM para asegurarse de que ha transcurrido una determinada cantidad de tiempo desde que alguien utilizó el recurso por última vez. Esto se aplica a usuarios, grupos, roles y políticas. Para obtener más información acerca de estas acciones, consulte los siguientes temas:

Uso de datos antes de editar políticas de IAM

Puede revisar los datos de los últimos servicios a los que se ha accedido de una entidad de IAM (usuario, grupo o rol) o de una política de IAM antes de editar una política que afecta a dicho recurso. Esto es importante porque no desea eliminar el acceso de alguien que lo está utilizando.

Por ejemplo, Arnav Desai es desarrollador y administrador de AWS de Example Corp. Cuando su equipo comenzó a utilizar AWS, todos los desarrolladores tenían acceso de usuario avanzado que les permitían acceso completo a todos los servicios salvo IAM y Organizaciones. Como primer paso hacia la concesión de privilegios mínimos, Arnav quiere utilizar la AWS CLI para revisar las políticas administradas de su cuenta.

Para ello, Arnav primero lista las políticas de permisos administrados por el cliente de su cuenta asociadas a una identidad, utilizando el comando siguiente:

aws iam list-policies --scope Local --only-attached --policy-usage-filter PermissionsPolicy

De la respuesta, captura el ARN de cada política. Arnav, a continuación, genera un informe de datos de los últimos servicios a los que se ha accedido de cada política utilizando el siguiente comando.

aws iam generate-service-last-accessed-details --arn arn:aws:iam::123456789012:policy/ExamplePolicy1

De esa respuesta, captura el ID del informe generado desde el campo JobId. Arnav a continuación, sondea el siguiente comando hasta que el campo JobStatus devuelva un valor de COMPLETED o FAILED. Si se produjo un error en el trabajo, captura el error.

aws iam get-service-last-accessed-details --job-id 98a765b4-3cde-2101-2345-example678f9

Cuando el trabajo tiene un estado de COMPLETED, Arnav analiza el contenido de la matriz ServicesLastAccessed con formato JSON.

"ServicesLastAccessed": [ { "TotalAuthenticatedEntities": 1, "LastAuthenticated": 2018-11-01T21:24:33.222Z, "ServiceNamespace": "dynamodb", "LastAuthenticatedEntity": "arn:aws:iam::123456789012:user/IAMExampleUser", "ServiceName": "Amazon DynamoDB" }, { "TotalAuthenticatedEntities": 0, "ServiceNamespace": "ec2", "ServiceName": "Amazon EC2" }, { "TotalAuthenticatedEntities": 3, "LastAuthenticated": 2018-08-25T15:29:51.156Z, "ServiceNamespace": "s3", "LastAuthenticatedEntity": "arn:aws:iam::123456789012:role/IAMExampleRole", "ServiceName": "Amazon S3" } ]

A partir de esta información, Arnav descubre que la política ExamplePolicy1 permite el acceso a tres servicios, Amazon DynamoDB, Amazon S3 y Amazon EC2. El usuario de IAM llamado IAMExampleUser intentó accede por última vez a DynamoDB el 1 de noviembre y alguien utilizó el rol IAMExampleRole para intentar acceder a Amazon S3 el 25 de agosto. También hay dos entidades más que han intentado acceder a Amazon S3 en el último año. Sin embargo, nadie ha intentado acceder a Amazon EC2 en el último año.

Esto significa que Arnav puede eliminar de forma segura las acciones de Amazon EC2 de la política. Arnav desea revisar el documento JSON actual de la política. En primer lugar, debe determinar el número de versión de la política utilizando el siguiente comando.

aws iam list-policy-versions --policy-arn arn:aws:iam::123456789012:policy/ExamplePolicy1

De la respuesta, Arnav recopila los número de versión predeterminada actual de la matriz Versions. A continuación, utiliza ese número de versión (v2) para solicitar el documento de política JSON utilizando el siguiente comando.

aws iam get-policy-version --policy-arn arn:aws:iam::123456789012:policy/ExamplePolicy1 --version-id v2

Arnav almacena el documento de política de JSON devuelto en el campo Document de la matriz PolicyVersion. Dentro del documento de política, Arnav busca acciones con el espacio de nombres ec2. Si no hay acciones de otros espacios de nombres restantes en la política, desasociará la política de las identidades afectadas (usuarios, grupos y roles). A continuación, elimina la política. En este caso, la política no incluye los servicios Amazon DynamoDB y Amazon S3. Por lo tanto, Arnav elimina las acciones de Amazon EC2 del documento y guarda los cambios. A continuación, utiliza el siguiente comando para actualizar la política utilizando la nueva versión del documento y establecer que dicha versión es la versión de política predeterminada.

aws iam create-policy-version --policy-arn arn:aws:iam::123456789012:policy/ExamplePolicy1 --policy-document file://UpdatedPolicy.json --set-as-default

La política ExamplePolicy1 ahora está actualizada para eliminar el acceso al servicio de Amazon EC2 innecesario.

Otros escenarios de IAM

La información sobre cuando un recurso de IAM (usuario, grupo, rol o política) a intentado por última vez acceder a un servicio puede ayudarle a la hora de completar cualquiera de las siguientes tareas:

Uso de datos para ajustar los permisos de una unidad organizativa

Puede utilizar datos de los últimos servicios a los que se ha accedido para refinar los permisos para una unidad organizativa de AWS Organizations.

Por ejemplo, John Stiles es un administrador de AWS Organizations. Es responsable de garantizar que las personas de las cuentas de AWS de la empresa no tengan demasiados permisos. En el marco de una auditoría de seguridad periódica, revisa los permisos de la organización. Su unidad organizativa Development incluye cuentas que se suelen utilizar para probar nuevos servicios de AWS. John decide revisar periódicamente el informe de los servicios a los que no se ha accedido en más de 180 días. Luego elimina los permisos de los miembros de la unidad organizativa para acceder a dichos servicios.

John inicia sesión en la consola de IAM con sus credenciales de cuenta maestra. En la consola de IAM, localiza los datos de Organizaciones de la unidad organizativa Development. Revisa la tabla Service access report (Informe de acceso a servicios) y ve dos servicios de AWS a los que no se ha accedido en más de su período preferido de 180 días. Recuerda que añadió permisos para que los equipos de desarrollo accedieran a Amazon Lex y AWS Database Migration Service. John se pone en contacto con los equipos de desarrollo y confirma que ya no tienen una necesidad comercial de probar estos servicios.

Ahora, John está listo para actuar en los datos de los últimos servicios a los que se ha accedido. Elije Edit in AWS Organizations (Editar en AWS Organizations) y se le recuerda que la SCP está asociada a varias entidades. Elije Continue (Continuar). En AWS Organizations, revisa los destinos para averiguar a qué entidades de Organizaciones está asociada la SCP. Todas las entidades se encuentran dentro de la unidad organizativa Development.

John decide denegar el acceso a las acciones de Amazon Lex y AWS Database Migration Service en la SCP NewServiceTest. Esta acción elimina el acceso innecesario a los servicios.