限られた権限を持つスキーマに関連付けられたユーザーがいます。実行中、同じユーザーログインを使用して対称鍵を生成しています。ユーザーには権限が制限されているため、ここでは鍵を作成できません。
このユーザーに対して、SQL Server 2008で対称キーを作成、読み取り、実行する権限を付与するにはどうすればよいですか?
次のような証明書なしでキーを作成する場合:
CREATE SYMMETRIC KEY smTestKey
WITH ALGORITHM=AES_256
, IDENTITY_VALUE = 'Key to protect bla'
, Key_SOURCE = N'Secret pass phrase'
ENCRYPTION BY PASSWORD = 'secret password';
次は十分です:
GRANT ALTER ANY SYMMETRIC KEY TO dbuser
たとえば、証明書(別のdbユーザーが作成したもの)で暗号化された対称鍵を作成する場合は、次のようになります。
CREATE SYMMETRIC KEY smTestKeyCert
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE testCert;
次に、証明書に対するVIEW DEFINITION権限も必要です。
GRANT VIEW DEFINITION ON CERTIFICATE::testcert TO dbuser
ただし、証明書で復号化して対称キーを開く場合、キーを開くdbuserは証明書に対するCONTROL権限が必要です。
GRANT CONTROL ON CERTIFICATE::testcert TO dbuser
[〜#〜] update [〜#〜]サマライズするには:
あなたのシナリオ:
--UserA needs to create Asymmetric keys so needs ALTER ANY ASYMMETRIC KEY PERMISSION
GRANT ALTER ANY ASYMMETRIC KEY TO userA
--UserB needs to create Symmetric keys so needs ALTER ANY SYMMETRIC KEY PERMISSION
GRANT ALTER ANY SYMMETRIC KEY TO userB
--UserA creates Asymmetric keys that are used by userB to create Symmetric keys and later open them
--So userA must create the Asymmetric key and Also give CONTROL permission on the Asymmetric key to UserB
--Create Asymmetric key
CREATE ASYMMETRIC KEY asym_CommonKey
WITH ALGORITHM = RSA_2048
ENCRYPTION BY PASSWORD = 'admin@123';
--Give control permission to UserB
GRANT CONTROL ON ASYMMETRIC KEY::asym_CommonKey to UserB
--UserB creates a symmetric key using the Asymmetric key from userA
--Note, at this stage VIEW DEFINITION permission on the Asymmetric key would have been sufficient
CREATE SYMMETRIC KEY sym_CommonKey
WITH ALGORITHM = AES_256
ENCRYPTION BY ASYMMETRIC KEY asym_CommonKey
--UserB opens the Symmetric key, decrypting it with the Asymmetric Key
--Note, at this stage User B needs the CONTROL permission on the Asymmetric key.
OPEN SYMMETRIC KEY sym_CommonKey DECRYPTION BY ASYMMETRIC KEY asym_CommonKey with password ='admin@123'
ソース:
データベースに対するALTER ANY SYMMETRIC KEY権限が必要です。 AUTHORIZATIONが指定されている場合、データベースユーザーに対するIMPERSONATE権限またはアプリケーションロールに対するALTER権限が必要です。暗号化が証明書または非対称キーによる場合は、証明書または非対称キーに対するVIEW DEFINITION権限が必要です。対称キーを所有できるのは、Windowsログイン、SQL Serverログイン、およびアプリケーションロールのみです。グループとロールは対称鍵を所有できません。
呼び出し元は、キーに対する何らかの権限を持っている必要があり、キーに対するVIEW DEFINITION権限が拒否されてはなりません。追加の要件は、復号化メカニズムによって異なります。
DECRYPTION BY CERTIFICATE: CONTROL permission on the certificate and knowledge of the password that encrypts its private key. DECRYPTION BY ASYMMETRIC KEY: CONTROL permission on the asymmetric key and knowledge of the password that encrypts its private key. DECRYPTION BY PASSWORD: knowledge of one of the passwords that is used to encrypt the symmetric key.