CREATE MASTER KEY (Transact-SQL)

適用対象:yesSQL Server (サポートされているすべてのバージョン) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

データベースにデータベース マスター キーを作成します。

重要

  • マスター キーは BACKUP MASTER KEY を使用してバックアップし、安全な別の場所に保存する必要があります。
  • また、SQL Server では、BACKUP SERVICE MASTER KEY を使用してサービス マスター キーをバックアップし、安全な別の場所に保存する必要があります。

Topic link iconTransact-SQL 構文表記規則

構文

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

Note

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

PASSWORD ='password'

データベース内のマスター キーを暗号化するために使用されるパスワード。 password は、Windows のパスワード ポリシーが SQL Server のインスタンスを実行するコンピューターに要求する条件を満足する必要があります。 password は、SQL Database および Azure Synapse Analytics では省略可能です。

注釈

データベース マスター キーは対称キーで、証明書の秘密キーやデータベース内に存在する非対称キーを保護するときに使用します。 データベース マスター キーを作成するときには、AES_256 アルゴリズムとユーザー指定のパスワードを使用してマスター キーを暗号化します。 SQL Server 2008 および SQL Server 2008 R2 では、トリプル DES アルゴリズムを使用します。 マスター キーの暗号化を自動的に解除できるようにするには、サービス マスター キーを使用してキーのコピーを暗号化し、データベースと master の両方に格納します。 通常、master に格納されたコピーは、マスター キーが変更されるたびに暗黙的に更新されます。 この既定の設定は、ALTER MASTER KEY の DROP ENCRYPTION BY SERVICE MASTER KEY オプションを使って変更できます。 サービス マスター キーによって暗号化されていないマスター キーは、OPEN MASTER KEY ステートメントとパスワードを使って開かれている必要があります。

master 内の sys.databases カタログ ビューの is_master_key_encrypted_by_server 列には、データベース マスター キーがサービス マスター キーによって暗号化されるかどうかが示されます。

データベース マスター キーに関する情報は、sys.symmetric_keys カタログ ビューで確認できます。

SQL Server および Parallel Data Warehouse では、通常、マスター キーはサービス マスター キーと少なくとも 1 つのパスワードによって保護されています。 データベースが異なるサーバーに物理的に移動される場合 (ログ配布、バックアップの復元など)、データベースには、元のサーバーのサービス マスター キーによって暗号化されたマスター キーのコピーと (この暗号化が ALTER MASTER KEY DDL を使って明示的に削除されていない場合)、CREATE MASTER KEY または後続の ALTER MASTER KEY DDL 操作の間に指定された各パスワードによって暗号化されたそのコピーが含まれます。 データベースを移動した後、マスター キーと、マスター キーを使って暗号化されたすべてのデータを、キー階層のルートとして復旧するには、新しいサーバーで、マスター キーの保護に使われているパスワードの 1 つを指定して OPEN MASTER KEY ステートメントを使うか、マスター キーのバックアップを復元するか、または元のサービス マスター キーのバックアップを復元します。

SQL Database および Azure Synapse Analytics の場合、マスター キーでのサービス マスター キーの保護は Microsoft Azure プラットフォームによって管理されるので、パスワード保護は、データベースがサーバー間で移動される可能性がある場合のデータ損失シナリオを防ぐための安全なメカニズムとは見なされません。 したがって、マスター キーのパスワードは、SQL Database および Azure Synapse Analytics では省略可能です。

サービス マスター キーとデータベース マスター キーは、AES-256 アルゴリズムを使用して保護されます。

アクセス許可

データベースに対する CONTROL 権限が必要です。

データベースにデータベース マスター キーを作成するには、次の例を使用します。 このキーはパスワードを使用して暗号化されます。

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

新しいキー (##MS_DatabaseMasterKey##) が存在することを確認します。

SELECT * FROM sys.symmetric_keys;
GO

関連項目

次の手順