CREATE MASTER KEY (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Crea una clave maestra de base de datos en la base de datos.

Importante

  • Debe realizar una copia de seguridad de la clave maestra mediante BACKUP MASTER KEY y almacenar la copia de seguridad en un lugar seguro y fuera de las instalaciones.
  • En SQL Server, también debe hacer copia de seguridad de la clave maestra de servicio mediante BACKUP SERVICE MASTER KEY, y almacenar la copia de seguridad en un lugar seguro y fuera de las instalaciones.

Convenciones de sintaxis de Transact-SQL

Sintaxis

CREATE MASTER KEY [ ENCRYPTION BY PASSWORD ='password' ]
[ ; ]

Argumentos

PASSWORD ='password'

La contraseña usada para cifrar la clave maestra de la base de datos. password debe cumplir los requisitos de la directiva de contraseñas de Windows del equipo que ejecuta la instancia de SQL Server. password es opcional en SQL Database y Azure Synapse Analytics.

Comentarios

La clave maestra de base de datos es una clave simétrica que se usa para proteger las claves privadas de certificados y claves asimétricas presentes en la base de datos y los secretos de las credenciales con ámbito de base de datos. Al crearla, la clave maestra se cifra mediante el algoritmo AES_256 y una contraseña proporcionada por el usuario. En SQL Server 2008 (10.0.x) y SQL Server 2008 R2 (10.50.x), se usa el algoritmo triple DES. Para habilitar el descifrado automático de la clave maestra, se cifra una copia de la clave mediante la clave maestra de servicio y se almacena en la base de datos y en master. Por lo general, la copia almacenada en master se actualiza automáticamente al cambiar la clave maestra. Es posible cambiar esta opción predeterminada usando la opción DROP ENCRYPTION BY SERVICE MASTER KEY de ALTER MASTER KEY. Una clave maestra que no está cifrada por la clave maestra de servicio debe abrirse mediante la instrucción OPEN MASTER KEY y una contraseña.

La columna is_master_key_encrypted_by_server de la vista de catálogo sys.databases de master indica si la clave maestra de la base de datos se ha cifrado con la clave maestra de servicio.

Puede ver información sobre la clave maestra de base de datos en la vista de catálogo sys.symmetric_keys.

Para el Almacenamiento de datos paralelos de SQL Server, la clave maestra normalmente está protegida por la clave maestra de servicio y al menos una contraseña. En caso de que la base de datos se mueva físicamente a otro servidor (trasvase de registros, restauración de la copia de seguridad, etc.), contendrá una copia de la clave maestra cifrada por la clave maestra de servicio del servidor original (a menos que el cifrado se haya quitado explícitamente mediante ALTER MASTER KEY DDL) y una copia de ella misma cifrada por cada contraseña especificada durante operaciones CREATE MASTER KEY o ALTER MASTER KEY DDL posteriores. Después de haber movido la base de datos, para poder recuperar la clave maestra y todos los datos cifrados con ella como la raíz de la jerarquía de claves, el usuario tendrá que utilizar la instrucción OPEN MASTER KEY con una de las contraseñas usadas para proteger la clave maestra, restaurar una copia de seguridad de la clave maestra o restaurar una copia de seguridad de la clave maestra de servicio original en el servidor nuevo.

Para SQL Database y Azure Synapse Analytics, la protección con contraseña no se considera un mecanismo de seguridad para evitar un escenario de pérdida de datos en situaciones en las que la base de datos se puede mover de un servidor a otro, ya que la protección de claves maestras de servicio en la clave maestra se administra mediante la plataforma Microsoft Azure. Por tanto, la contraseña de clave maestra es opcional en SQL Database y Azure Synapse Analytics.

Para SQL Database, la clave maestra de base de datos se puede crear automáticamente para proteger los secretos de las credenciales con ámbito de base de datos que se usan para la auditoría y otras características que requieren una credencial con ámbito de base de datos para autenticarse en un recurso externo, como una cuenta de Azure Storage. La clave maestra se crea con una contraseña segura seleccionada aleatoriamente. Los usuarios no pueden crear la clave maestra en una base de datos lógica master . La contraseña de clave maestra es desconocida para Microsoft y no se puede detectar después de la creación. Por este motivo, se recomienda crear una clave maestra de base de datos antes de crear una credencial con ámbito de base de datos.

La clave maestra de servicio y las claves maestras de base de datos se protegen mediante el algoritmo AES-256.

Permisos

Necesita el permiso CONTROL en la base de datos.

Ejemplos

Use el ejemplo siguiente para crear una clave maestra de base de datos en una base de datos. La clave se cifra con una contraseña.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
GO

Compruebe la presencia de la nueva clave, ##MS_DatabaseMasterKey##:

SELECT * FROM sys.symmetric_keys;
GO