CREATE MASTER KEY (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
データベースにデータベース マスター キーを作成します。
重要
- マスター キーは BACKUP MASTER KEY を使用してバックアップし、安全な別の場所に保存する必要があります。
- また、SQL Server では、BACKUP SERVICE MASTER KEY を使用してサービス マスター キーをバックアップし、安全な別の場所に保存する必要があります。
構文
CREATE MASTER KEY [ ENCRYPTION BY PASSWORD ='password' ]
[ ; ]
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
PASSWORD ='password'
データベース内のマスター キーを暗号化するために使用されるパスワード。 password は、Windows のパスワード ポリシーが SQL Server のインスタンスを実行するコンピューターに要求する条件を満足する必要があります。 password は、SQL Database および Azure Synapse Analytics では省略可能です。
解説
データベース マスター キーは、データベースに存在する証明書と非対称キーの秘密キーと、データベース スコープ資格情報内のシークレットを保護するために使用される対称キーです。 データベース マスター キーを作成するときには、AES_256 アルゴリズムとユーザー指定のパスワードを使用してマスター キーを暗号化します。 SQL Server 2008 (10.0.x) と SQL Server 2008 R2 (10.50.x) では、Triple 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 では省略可能です。
SQL Database の場合、データベース マスター キーを自動的に作成して、監査に使用されるデータベース スコープの資格情報のシークレットや、Azure Storage アカウントなどの外部リソースに対する認証にデータベース スコープの資格情報を必要とするその他の機能を保護できます。 マスター キーは、ランダムに選択された強力なパスワードで作成されます。 ユーザーは、論理 master
データベースにマスター キーを作成できません。 マスター キーのパスワードは Microsoft では不明であり、作成後は検出できません。 このため、データベース スコープ資格情報を作成する前にデータベース マスター キーを作成することをお勧めします。
サービス マスター キーとデータベース マスター キーは、AES-256 アルゴリズムを使用して保護されます。
アクセス許可
データベースに対する CONTROL 権限が必要です。
例
データベースにデータベース マスター キーを作成するには、次の例を使用します。 このキーはパスワードを使用して暗号化されます。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
GO
新しいキー (##MS_DatabaseMasterKey##
) が存在することを確認します。
SELECT * FROM sys.symmetric_keys;
GO