Creación manual de un rol de IAM para SQL Server Audit - Amazon Relational Database Service

Creación manual de un rol de IAM para SQL Server Audit

Normalmente, al crear una nueva opción, la AWS Management Console crea el rol de IAM y la política de confianza de IAM en su nombre. No obstante, puede crear manualmente un nuevo rol de IAM para usarlo con instancias de SQL Server Audit de modo que pueda personalizarlo con los requisitos adicionales que pueda tener. Para ello, debe crear un rol de IAM y delegar permisos de modo que el servicio Amazon RDS pueda usar su bucket de Amazon S3. Cuando cree este rol de IAM, debe asociar políticas de confianza y de permisos. La política de confianza permite a Amazon RDS asumir este rol. La política de permisos define las acciones que puede realizar este rol. Para obtener más información, consulte Creación de un rol para delegar permisos a un servicio de AWS en la Guía del usuario de AWS Identity and Access Management.

Puede usar los ejemplos de esta sección para crear las relaciones de confianza y las políticas de permisos que necesite.

El siguiente ejemplo muestra una relación de confianza para SQL Server Audit. Usa el principal de servicio rds.amazonaws.com para permitir que RDS escriba en el bucket de S3 Un principal de servicio es un identificador que se utiliza para conceder permisos a un servicio. Cada vez que conceda acceso a rds.amazonaws.com de esta forma, permitirá a RDS realizar una acción en su nombre. Para obtener más información acerca de las entidades principales de servicio, consulte la sección sobre elementos de las políticas de JSON de:AWS entidad principal.

ejemplo relación de confianza para SQL Server Audit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Se recomienda usar las claves de contexto de condición global aws:SourceArn y aws:SourceAccount en las relaciones de confianza basadas en recursos para limitar los permisos del servicio a un recurso específico. Esta es la forma más eficaz de protegerse contra el problema del suplente confuso.

Puede utilizar claves de contexto de condición globales y hacer que el valor de aws:SourceArn contenga el ID de cuenta. En estos casos, el valor de aws:SourceAccount y la cuenta del valor de aws:SourceArn deben utilizar el mismo ID de cuenta cuando se utilizan en la misma instrucción.

  • Use aws:SourceArn si quiere acceso entre servicios para un único recurso.

  • Use aws:SourceAccount si quiere permitir que cualquier recurso de esa cuenta se asocie al uso entre servicios.

En la relación de confianza, asegúrese de usar la clave de contexto de la condición global aws:SourceArn con el nombre de recurso de Amazon (ARN) completo de los recursos que acceden al rol. En el caso de SQL Server Audit, asegúrese de incluir tanto el grupo de opciones de base de datos y las instancias de base de datos, como se muestra en el siguiente ejemplo.

ejemplo relación de confianza con clave de contexto de condición global para SQL Server Audit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier", "arn:aws:rds:Region:my_account_ID:og:option_group_name" ] } } } ] }

En el siguiente ejemplo de política de permisos para SQL Server Audit, especificamos un ARN para el bucket de Simple Storage Service (Amazon S3). Puede usar ARN para identificar una cuenta, un usuario o un rol específicos a los que desea conceder acceso. Para obtener más información acerca de cómo usar los ARN, consulte Nombres de recurso de Amazon (ARN).

ejemplo política de permisos para SQL Server Audit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*" } ] }
nota

La s3:ListAllMyBuckets acción es necesaria para verificar que la misma AWS cuenta posee tanto el bucket S3 como la instancia de base de datos de SQL Server. La acción enumera los nombres de los buckets de la cuenta.

Los espacios de nombres del bucket de S3 son globales. Si elimina accidentalmente el bucket, otro usuario puede crear un bucket con el mismo nombre en una cuenta distinta. A continuación, los datos de auditoría de SQL Server se escriben en el nuevo bucket.