Ejemplos de políticas basadas en identidades de AWS CloudTrail - AWS CloudTrail

Ejemplos de políticas basadas en identidades de AWS CloudTrail

De forma predeterminada, los usuarios y roles no tienen permiso para crear ni modificar los recursos de CloudTrail. Un administrador de IAM puede crear políticas de IAM para conceder permisos a los usuarios para realizar acciones en los recursos que necesitan.

Para obtener información acerca de cómo crear una política basada en identidades de IAM mediante el uso de estos documentos de políticas JSON de ejemplo, consulte Creación de políticas de IAM (consola) en la Guía del usuario de IAM.

A fin de obtener más información sobre las acciones y los tipos de recursos definidos por CloudTrail, incluido el formato de los ARN para cada tipo de recurso, consulte Acciones, recursos y claves de condición para AWS CloudTrail en la Referencia de autorizaciones de servicio.

Prácticas recomendadas sobre las políticas

Las políticas basadas en identidades determinan si alguien puede crear, eliminar o acceder a los recursos de CloudTrail de su cuenta. Estas acciones pueden generar costos adicionales para su Cuenta de AWS. Siga estas directrices y recomendaciones al crear o editar políticas basadas en identidades:

  • Comienza con las políticas administradas por AWSy continúa con los permisos de privilegio mínimo: a fin de comenzar a conceder permisos a los usuarios y las cargas de tarea, utiliza las políticas administradas por AWS, que conceden permisos para muchos casos de uso comunes. Están disponibles en su Cuenta de AWS. Se recomienda definir políticas gestionadas por el cliente de AWS específicas para sus casos de uso a fin de reducir aún más los permisos. Con el fin de obtener más información, consulte las políticas administradas por AWS o las políticas administradas por AWS para funciones de tarea en la Guía de usuario de IAM.

  • Aplique permisos de privilegio mínimo: cuando establezca permisos con políticas de IAM, conceda solo los permisos necesarios para realizar una tarea. Para ello, debe definir las acciones que se pueden llevar a cabo en determinados recursos en condiciones específicas, también conocidos como permisos de privilegios mínimos. Con el fin de obtener más información sobre el uso de IAM para aplicar permisos, consulte Políticas y permisos en IAM en la Guía del usuario de IAM.

  • Utilice condiciones en las políticas de IAM para restringir aún más el acceso: puede agregar una condición a sus políticas para limitar el acceso a las acciones y los recursos. Por ejemplo, puedes escribir una condición de políticas para especificar que todas las solicitudes deben enviarse utilizando SSL. También puedes usar condiciones para conceder acceso a acciones de servicios si se emplean a través de un Servicio de AWS determinado como, por ejemplo, CloudFormation. Para obtener más información, consulte Elementos de la política de JSON de IAM: Condición en la Guía del usuario de IAM.

  • Utiliza el analizador de acceso de IAM para validar las políticas de IAM con el fin de garantizar la seguridad y funcionalidad de los permisos: el analizador de acceso de IAM valida políticas nuevas y existentes para que respeten el lenguaje (JSON) de las políticas de IAM y las prácticas recomendadas de IAM. El analizador de acceso de IAM proporciona más de 100 verificaciones de políticas y recomendaciones procesables para ayudar a crear políticas seguras y funcionales. Para más información, consulte Validación de políticas con el Analizador de acceso de IAM en la Guía del usuario de IAM.

  • Solicite la autenticación multifactor (MFA): si se encuentra en una situación en la que necesite usuarios raíz o de IAM en su Cuenta de AWS, active la MFA para obtener una mayor seguridad. Para exigir la MFA cuando se invoquen las operaciones de la API, añada condiciones de MFA a sus políticas. Para más información, consulte Acceso seguro a la API con MFA en la Guía del usuario de IAM.

Para obtener más información sobre las prácticas recomendadas de IAM, consulte Prácticas recomendadas de seguridad en IAM en la Guía del usuario de IAM.

CloudTrail no tiene claves de contexto específicas de servicios que pueda utilizar en el elemento Condition de las instrucciones de política.

Ejemplo: permitir y denegar acciones para un registro de seguimiento especificado

En el ejemplo siguiente, se muestra una política que permite a los usuarios que la tienen ver el estado y la configuración de un registro de seguimiento e iniciar y detener el registro de un registro de seguimiento denominado My-First-Trail. Este registro de seguimiento se creó en la región Este de EE. UU. (Ohio) (su región principal) en la Cuenta de AWS con el ID 123456789012.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudtrail:StartLogging", "cloudtrail:StopLogging", "cloudtrail:GetTrail", "cloudtrail:GetTrailStatus", "cloudtrail:GetEventSelectors" ], "Resource": [ "arn:aws:cloudtrail:us-east-2:123456789012:trail/My-First-Trail" ] } ] }

En el siguiente ejemplo se muestra una política que deniega explícitamente las acciones de CloudTrail para cualquier registro de seguimiento que no se denomine My-First-Trail.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "cloudtrail:*" ], "NotResource": [ "arn:aws:cloudtrail:us-east-2:123456789012:trail/My-First-Trail" ] } ] }

Ejemplos: creación y aplicación de políticas para acciones en registros de seguimiento específicos

Puede utilizar los permisos y las políticas para controlar la capacidad de un usuario para realizar acciones específicas en el registro de seguimiento de CloudTrail.

Por ejemplo, no le interesa que los usuarios del grupo de desarrolladores de su empresa inicien o detengan un registro de seguimiento específico. Sin embargo, tal vez le interese concederles permiso para que lleven a cabo las acciones DescribeTrails y GetTrailStatus que se hagan en el registro de seguimiento. Desea que los usuarios del grupo de desarrolladores realicen las acciones StartLogging o StopLogging en los registros de seguimiento que ellos administran.

Puede crear dos instrucciones de política y adjuntarlas al grupo de desarrolladores que cree en IAM. Para obtener más información sobre los grupos de IAM, consulte Grupos de IAM en la Guía del usuario de IAM .

En la primera, deniega las acciones StartLogging y StopLogging del ARN del registro de seguimiento que especifique. En el ejemplo siguiente, el ARN del registro de seguimiento es arn:aws:cloudtrail:us-east-2:123456789012:trail/Example-Trail.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Stmt1446057698000", "Effect": "Deny", "Action": [ "cloudtrail:StartLogging", "cloudtrail:StopLogging" ], "Resource": [ "arn:aws:cloudtrail:us-east-2:123456789012:trail/Example-Trail" ] } ] }

En la segunda política, las acciones DescribeTrails y GetTrailStatus están permitidas en todos los recursos de CloudTrail:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Stmt1446072643000", "Effect": "Allow", "Action": [ "cloudtrail:DescribeTrails", "cloudtrail:GetTrail", "cloudtrail:GetTrailStatus" ], "Resource": [ "*" ] } ] }

Si un usuario del grupo de desarrolladores intenta iniciar o detener el registro de seguimiento que ha especificado en la primera política, ese usuario obtiene una excepción de acceso denegado. Los usuarios del grupo de desarrolladores pueden iniciar y detener los registros de seguimiento que crean y administran.

En los siguientes ejemplos, se muestra el grupo de desarrolladores configurado en un perfil de AWS CLI denominado devgroup. En primer lugar, un usuario de devgroup ejecuta el comando describe-trails.

$ aws --profile devgroup cloudtrail describe-trails

El comando se completa correctamente con el resultado siguiente:

{ "trailList": [ { "IncludeGlobalServiceEvents": true, "Name": "Default", "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/Example-Trail", "IsMultiRegionTrail": false, "S3BucketName": "amzn-s3-demo-bucket", "HomeRegion": "us-east-2" } ] }

El usuario ejecuta el comando get-trail-status en el registro de seguimiento que ha especificado en la primera política.

$ aws --profile devgroup cloudtrail get-trail-status --name Example-Trail

El comando se completa correctamente con el resultado siguiente:

{ "LatestDeliveryTime": 1449517556.256, "LatestDeliveryAttemptTime": "2015-12-07T19:45:56Z", "LatestNotificationAttemptSucceeded": "", "LatestDeliveryAttemptSucceeded": "2015-12-07T19:45:56Z", "IsLogging": true, "TimeLoggingStarted": "2015-12-07T19:36:27Z", "StartLoggingTime": 1449516987.685, "StopLoggingTime": 1449516977.332, "LatestNotificationAttemptTime": "", "TimeLoggingStopped": "2015-12-07T19:36:17Z" }

A continuación, un usuario del grupo devgroup ejecuta el comando stop-logging en el mismo registro de seguimiento.

$ aws --profile devgroup cloudtrail stop-logging --name Example-Trail

El comando devuelve una excepción de acceso denegado, como la siguiente:

A client error (AccessDeniedException) occurred when calling the StopLogging operation: Unknown

El usuario ejecuta el comando start-logging en el mismo registro de seguimiento.

$ aws --profile devgroup cloudtrail start-logging --name Example-Trail

De nuevo, el comando devuelve una excepción de acceso denegado, como la siguiente:

A client error (AccessDeniedException) occurred when calling the StartLogging operation: Unknown

Ejemplos: Denegación de acceso para crear o eliminar almacenes de datos de eventos en función de etiquetas

En el siguiente ejemplo de política, se deniega el permiso para crear un almacén de datos de eventos con CreateEventDataStore si no se cumple al menos una de las siguientes condiciones:

  • El almacén de datos de eventos no tiene una clave de etiqueta de stage aplicada a sí mismo

  • El valor de la etiqueta de la etapa no es alpha, beta, gamma ni prod.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "cloudtrail:CreateEventDataStore", "Resource": "*", "Condition": { "Null": { "aws:RequestTag/stage": "true" } } }, { "Effect": "Deny", "Action": "cloudtrail:CreateEventDataStore", "Resource": "*", "Condition": { "ForAnyValue:StringNotEquals": { "aws:RequestTag/stage": [ "alpha", "beta", "gamma", "prod" ] } } } ] }

En el siguiente ejemplo de política, se deniega el permiso para eliminar un almacén de datos de eventos con DeleteEventDataStore si el almacén de datos de eventos tiene la etiqueta stage con un valor de prod. Una política similar puede ayudar a proteger un almacén de datos de eventos de una eliminación accidental.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "cloudtrail:DeleteEventDataStore", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/stage": "prod" } } } ] }

Mediante la consola de CloudTrail

Para acceder a la consola de AWS CloudTrail, debe tener un conjunto mínimo de permisos. Estos permisos deben permitirle registrar y consultar los detalles acerca de los recursos de CloudTrail en su Cuenta de AWS. Si crea una política basada en identidades que sea más restrictiva que el mínimo de permisos necesarios, la consola no funcionará del modo esperado para las entidades (usuarios o roles) que tengan esa política.

No es necesario que conceda permisos mínimos para la consola a los usuarios que solo realizan llamadas a la AWS CLI o a la API de AWS. En su lugar, permite el acceso únicamente a las acciones que coincidan con la operación de API que intentan realizar.

Concesión de permisos para la administración de CloudTrail

Para permitir a los usuarios o roles de IAM administrar un recurso de CloudTrail, como un registro de seguimiento, un almacén de datos de eventos o un canal, debe conceder permisos de manera explícita para que lleven a cabo las acciones asociadas a las tareas de CloudTrail. En la mayoría de las situaciones, puede utilizar una política administrada de AWS que contenga los permisos predefinidos.

nota

Los permisos que conceda a los usuarios para hacer tareas de administración de CloudTrail no son los mismos que los permisos que CloudTrail requiere para enviar los archivos de registro a buckets de Amazon S3 o enviar notificaciones a temas de Amazon SNS. Para obtener más información acerca de estos permisos, consulte Política de bucket de Amazon S3 para CloudTrail.

Si configura la integración con Amazon CloudWatch Logs, CloudTrail también requiere un rol que pueda adoptar para enviar los eventos a un grupo de registros de CloudWatch Logs. Debe crear el rol que usa CloudTrail. Para obtener más información, consulte Concesión de permisos para ver y configurar la información de Amazon CloudWatch Logs en la consola de CloudTrail y Envío de eventos a Amazon CloudWatch Logs.

Las siguientes políticas administradas de AWS están disponibles para CloudTrail:

  • AWSCloudTrail_FullAccess – esta política proporciona acceso completo a las acciones de CloudTrail en los recursos de CloudTrail, como los registros de seguimiento, los almacenes de datos de eventos y los canales. Esta política proporciona los permisos necesarios para crear, actualizar y eliminar registros de seguimiento, almacenes de datos de eventos y canales de CloudTrail.

    Esta política también ofrece permisos para administrar el bucket de Amazon S3, el grupo de registro de Registros de CloudWatch y un tema de Amazon SNS para un registro de seguimiento. Sin embargo, la política administrada AWSCloudTrail_FullAccess no proporciona permisos para eliminar el bucket de Amazon S3, el grupo de registro de Registros de CloudWatch o un tema de Amazon SNS. Para obtener información sobre las políticas administradas para otros Servicios de AWS, consulte la Guía de referencia de políticas administradas de AWS.

    nota

    La política AWSCloudTrail_FullAccess no se ha concebido para compartirla ampliamente en la Cuenta de AWS. Los usuarios con este rol pueden desactivar o reconfigurar las funciones de auditoría más importantes y confidenciales de su Cuentas de AWS. Por este motivo, solo debe aplicar esta política a los administradores de cuentas. Debe controlar y supervisar de cerca el uso de esta política.

  • AWSCloudTrail_ReadOnlyAccess – esta política concede permisos para ver la consola de CloudTrail, incluidos los últimos eventos y el historial de eventos. Esta política también le permite ver los registros de seguimiento, los almacenes de datos de eventos y los canales existentes. Los roles y los usuarios sujetos a esta política pueden descargar el historial de eventos, pero no pueden crear ni actualizar registros de seguimiento, almacenes de datos de eventos ni canales.

Para dar acceso, agregue permisos a los usuarios, grupos o roles:

Recursos adicionales

Para obtener más información sobre el uso de IAM para dar acceso a los recursos de su cuenta a identidades, como usuarios y roles, consulte Cómo configurar IAM y Administración de acceso para los recursos de AWS en la Guía del usuario de IAM.

No es necesario que conceda permisos mínimos para la consola a los usuarios que solo realizan llamadas a la AWS CLI o a la API de AWS. En su lugar, permite acceso únicamente a las acciones que coincidan con la operación de API que intenta realizar.

Permitir a los usuarios consultar sus propios permisos

En este ejemplo, se muestra cómo podría crear una política que permita a los usuarios de IAM ver las políticas administradas e insertadas que se asocian a la identidad de sus usuarios. Esta política incluye permisos para llevar a cabo esta acción en la consola o mediante programación con la AWS CLI o la API de AWS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

Conceder permisos personalizados a los usuarios de CloudTrail

Las políticas de CloudTrail conceden permisos a los usuarios que trabajan con CloudTrail. Si necesita conceder diferentes permisos a los usuarios, puede adjuntar una política de CloudTrail a un grupo o a un usuario de IAM. Puede editar la política para incluir o excluir permisos específicos. También puede crear su propia política personalizada. Las políticas son documentos JSON que definen las acciones que puede realizar un usuario y los recursos en los que este puede llevar a cabo dichas acciones. Para ver ejemplos específicos, consulte Ejemplo: permitir y denegar acciones para un registro de seguimiento especificado y Ejemplos: creación y aplicación de políticas para acciones en registros de seguimiento específicos.

Acceso de solo lectura

En el siguiente ejemplo se muestra una política que concede acceso de solo lectura al registro de seguimiento de CloudTrail. Equivale a la política administrada AWSCloudTrail_ReadOnlyAccess. Se concede permiso a los usuarios para ver la información de los registros de seguimiento, pero no para crear o actualizar registros de seguimiento.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudtrail:Get*", "cloudtrail:Describe*", "cloudtrail:List*", "cloudtrail:LookupEvents" ], "Resource": "*" } ] }

En las declaraciones de políticas, el elemento Effect especifica si las acciones se permiten o se niegan. El elemento Action enumera las acciones específicas que puede realizar el usuario. El elemento Resource enumera los recursos de AWS en los que el usuario puede realizar estas acciones. Para las políticas que controlan el acceso a las acciones de CloudTrail, el elemento Resource está establecido en *, un carácter comodín que significa “todos los recursos”.

Los valores en el elemento Action corresponden a las API que admiten los servicios. Las acciones están precedidas por cloudtrail: para indicar que se refieren a acciones de CloudTrail. Puede utilizar el carácter comodín * en el elemento Action, como en los siguientes ejemplos:

  • "Action": ["cloudtrail:*Logging"]

    Esto permite todas las acciones de CloudTrail que finalizan con “Logging” Registrar (StartLogging, StopLogging).

  • "Action": ["cloudtrail:*"]

    Esto permite todas las acciones de CloudTrail, pero no las acciones para otros servicios de AWS.

  • "Action": ["*"]

    Esto permite todas las acciones de AWS. Este permiso es adecuado para un usuario que actúa como administrador de AWS en su cuenta.

La política de solo lectura no concede permiso al usuario para las acciones CreateTrail, UpdateTrail, StartLogging y StopLogging. Los usuarios con esta política no pueden crear y actualizar registros de seguimiento, ni activar y desactivar los registros. Para ver la lista completa de acciones de CloudTrail, consulte Referencia de la API de AWS CloudTrail.

Acceso completo

En el siguiente ejemplo se muestra una política que concede acceso completo a CloudTrail. Equivale a la política administrada AWSCloudTrail_FullAccess. Se concede a los usuarios el permiso para realizar todas las acciones de CloudTrail. También permite a los usuarios registrar eventos de datos en Amazon S3 y AWS Lambda, administrar archivos en buckets de Amazon S3, administrar cómo CloudWatch Logs monitorea los eventos de registro de CloudTrail y administrar los temas de Amazon SNS en la cuenta a la que está asociado el usuario.

importante

La política AWSCloudTrail_FullAccess o los permisos equivalentes no se han concebido para compartirse ampliamente en la cuenta de AWS. Los usuarios con este rol o un acceso equivalente tienen la capacidad de desactivar o reconfigurar las funciones de auditoría más importantes y confidenciales en sus cuentas de AWS. Por este motivo, esta política debe aplicarse únicamente a los administradores de cuentas y su uso debe ser controlado y monitorizado estrictamente.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:AddPermission", "sns:CreateTopic", "sns:SetTopicAttributes", "sns:GetTopicAttributes" ], "Resource": [ "arn:aws:sns:*:*:aws-cloudtrail-logs*" ] }, { "Effect": "Allow", "Action": [ "sns:ListTopics" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:PutBucketPolicy" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-logging-bucket1*" ] }, { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation", "s3:GetBucketPolicy" ], "Resource": "*" }, { "Effect": "Allow", "Action": "cloudtrail:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup" ], "Resource": [ "arn:aws:logs:*:*:log-group:aws-cloudtrail-logs*" ] }, { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:GetRolePolicy", "iam:GetUser" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "cloudtrail.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:CreateAlias", "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "lambda:ListFunctions" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "dynamodb:ListGlobalTables", "dynamodb:ListTables" ], "Resource": "*" } ] }

Concesión de permisos para ver la información de AWS Config en la consola de CloudTrail

Puede consultar la información del evento en la consola de CloudTrail, incluidos los recursos relacionados con ese evento. Para estos recursos, puede elegir el icono de AWS Config para ver el calendario de ese recurso en la consola de AWS Config. Adjunte esta política a los usuarios para concederles acceso de solo lectura a AWS Config. La política no les concede permiso para cambiar los ajustes en AWS Config.

JSON
{ "Version":"2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "config:Get*", "config:Describe*", "config:List*" ], "Resource": "*" }] }

Para obtener más información, consulte Ver los recursos a los que se hace referencia con AWS Config.

Concesión de permisos para ver y configurar la información de Amazon CloudWatch Logs en la consola de CloudTrail

Puede ver y configurar el envío de eventos a CloudWatch Logs en la consola de CloudTrail si tiene los permisos necesarios. Estos permisos pueden ser más amplios que los que se conceden a los administradores de CloudTrail. Adjunte esta política a los administradores que van a configurar y administrar la integración de CloudTrail con CloudWatch Logs. La política no les concede permisos en CloudTrail o en CloudWatch Logs directamente, sino que concede los permisos necesarios para crear y configurar el rol que CloudTrail adoptará para enviar los eventos correctamente al grupo de CloudWatch Logs.

JSON
{ "Version":"2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:PutRolePolicy", "iam:AttachRolePolicy", "iam:ListRoles", "iam:GetRolePolicy", "iam:GetUser" ], "Resource": "*" }] }

Para obtener más información, consulte Monitoreo de archivos de registros de CloudTrail con Amazon CloudWatch Logs.

Información adicional

Para obtener más información sobre el uso de IAM para dar acceso a los recursos de su cuenta a identidades, como usuarios y roles, consulte Introducción y Administración de acceso para los recursos de AWS en la Guía del usuario de IAM.