Creación y uso de una política de IAM para el acceso a bases de datos de IAM - Amazon Relational Database Service

Creación y uso de una política de IAM para el acceso a bases de datos de IAM

Para permitir a un usuario o rol conectarse a su instancia de base de datos, debe crear una política de IAM. Después de eso, puede asociar la política a un conjunto de permisos o un rol.

nota

Para obtener más información acerca de las políticas de IAM, consulte Administración de la identidad y el acceso en Amazon RDS.

La siguiente política de ejemplo permite a un usuario conectarse a una instancia de base de datos mediante la autenticación de bases de datos de IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:1234567890:dbuser:db-ABCDEFGHIJKL01234/db_user" ] } ] }
importante

Un usuario con permisos de administrador puede acceder a las instancias de base de datos sin permiso explícito en una política de IAM. Si desea restringir el acceso del administrador a los de instancias de base de datos, puede crear un rol de IAM con los permisos privilegiados menores y asignarlo al administrador.

nota

No confunda el prefijo rds-db: con otros prefijos de operación de la API de RDS que empiezan por rds:. Puede usar el prefijo rds-db: y la acción rds-db:connect solo para la autenticación de bases de datos de IAM. No son válidos en ningún otro contexto.

La política de ejemplo incluye una sola instrucción con los siguientes elementos:

  • Effect: especifique Allow para conceder acceso a la instancia. Si no permite el acceso de forma explícita, el acceso se deniega de forma predeterminada.

  • Action: especifique rds-db:connect para permitir las conexiones a la instancia.

  • Resource: especifique un nombre de recurso de Amazon (ARN) que describa una cuenta de base de datos en una instancia. El formato del ARN es el siguiente.

    arn:aws:rds-db:region:account-id:dbuser:DbiResourceId/db-user-name

    En este formato, reemplace lo siguiente:

    • region es la región de AWS para la instancia y . En la política de ejemplo, la región de AWS es us-east-2.

    • account-id es el número de cuenta de AWS para la instancia y . En la política de ejemplo, el número de cuenta es 1234567890. El usuario debe estar en la misma cuenta que la cuenta de la instancia de base de datos.

      Para realizar el acceso entre cuentas, cree un rol de IAM con la política que se muestra arriba en la cuenta para la instancia de base de datos y permita que su otra cuenta asuma el rol.

    • DbiResourceId es el identificador de la instancia. Este identificador es único para una región de AWS y nunca cambia. En la política de ejemplo, el identificador es db-ABCDEFGHIJKL01234.

      Para buscar un ID de recurso de instancia en la AWS Management Console de Amazon RDS, elija la instancia para ver los detalles. A continuación, elija la pestaña Configuration (Configuración). El Resource ID (ID de recurso) se muestra en la sección Configuration (Configuración).

      También puede usar el comando de la AWS CLI para enumerar los identificadores e ID de recurso para todas sus instancias y de base de datos en la región de AWS actual, como se muestra a continuación.

      aws rds describe-db-instances --query "DBInstances[*].[DBInstanceIdentifier,DbiResourceId]"

      Si utiliza Amazon Aurora, especifique un DbClusterResourceId en lugar de un DbiResourceId. Para obtener más información, consulte Creación y uso de una política de IAM para el acceso a bases de datos de IAM en la Guía del usuario de Amazon Aurora.

      nota

      Si se está conectando a una base de datos a través del proxy de RDS, especifique el ID del recurso proxy; por ejemplo, prx-ABCDEFGHIJKL01234. Para obtener información sobre el uso de la autenticación de bases de datos de IAM con el proxy de RDS, consulte Conexión a un proxy mediante autenticación de IAM.

    • db-user-name es el nombre de la cuenta de base de datos que se asociará a la autenticación de IAM. En la política de ejemplo, la cuenta de base de datos es db_user.

Puede crear otros ARN que admitan diversos patrones de acceso. La siguiente política permite el acceso a dos cuentas de base de datos diferentes en una instancia de base de datos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:123456789012:dbuser:db-ABCDEFGHIJKL01234/jane_doe", "arn:aws:rds-db:us-east-2:123456789012:dbuser:db-ABCDEFGHIJKL01234/mary_roe" ] } ] }

La siguiente política usa el carácter "*" a fin de buscar coincidencias con todas las instancias y de base de datos y cuentas de base de datos para una cuenta de AWS y una región de AWS determinadas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:1234567890:dbuser:*/*" ] } ] }

La siguiente política busca coincidencias con todas las instancias y de base de datos para una cuenta de AWS y una región de AWS determinadas. Sin embargo, la política solo concede acceso a instancias de base de datos que tienen una cuenta de base de datos jane_doe.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:123456789012:dbuser:*/jane_doe" ] } ] }

El usuario o el rol solo tiene acceso a las mismas bases de datos que el usuario de la base de datos. Por ejemplo, suponga que su instancia tiene una base de datos denominada dev y otra llamada test. Si el usuario de base de datos jane_doe solo tiene acceso a dev, cualquier usuario o rol que obtenga acceso a esa instancia de base de datos con el usuario jane_doe también tendrá acceso únicamente a dev. Esta restricción del acceso también se aplica a otros objetos de la base de datos tales como tablas, vistas, etc.

Un administrador debe crear políticas de IAM que concedan permisos a las entidades para realizar operaciones de la API concretas en los recursos especificados que necesiten. El administrador debe asociar esas políticas a los conjuntos de permisos o roles que necesiten esos permisos. Para ver algunos ejemplos de políticas, consulte Ejemplos de políticas basadas en identidad para Amazon RDS.

Asociación de una política de IAM a un conjunto de permisos o un rol

Tras crear una política de IAM que permita la autenticación de bases de datos, es necesario asociar la política a un conjunto de permisos o un rol. Para ver un tutorial acerca de este tema, consulte Crear y asociar su primera política administrada por el cliente en la Guía del usuario de IAM.

Mientras realiza el tutorial, puede usar uno de los ejemplos de política mostrados en esta sección como punto de partida y adaptarlo a sus necesidades. Al final del tutorial, tiene un conjunto de permisos con una política asociada que puede utilizar la acción rds-db:connect.

nota

Puede asignar varios conjuntos de permisos o roles a la misma cuenta de usuario de base de datos. Por ejemplo, suponga que su política de IAM ha especificado el siguiente ARN del recurso.

arn:aws:rds-db:us-east-2:123456789012:dbuser:db-12ABC34DEFG5HIJ6KLMNOP78QR/jane_doe

Si adjunta la política a los usuarios Jane, Bob y Diego, cada uno de esos usuarios puede conectarse a la instancia de base de datos especificado por medio de la cuenta de la base de datos de jane_doe.