создание асимметричного ключа по сети - PullRequest
6 голосов
/ 30 января 2012

Я пытаюсь добавить сборку в базу данных в SQL2008, используя асимметричный ключ .

Мы добавляем сборку с использованием шестнадцатеричной строки (добавление сборок на серверы только с помощью SQL-запросов)

USE [master] 
GO

IF NOT EXISTS (SELECT * from sys.asymmetric_keys where name = 'ManagedAsymmetricKey')
 BEGIN
  CREATE ASYMMETRIC KEY ManagedAsymmetricKey FROM FILE = 'C:\Managed.dll'
  CREATE LOGIN CLRLogin FROM ASYMMETRIC KEY ManagedAsymmetricKey
  GRANT UNSAFE ASSEMBLY TO CLRLogin
 END
GO

USE [$dbName]
GO
CREATE ASSEMBLY [Managed]
AUTHORIZATION [dbo]
FROM 0x4D5A....
WITH PERMISSION_SET = UNSAFE
GO

Это будет работать на локальном экземпляре, однако по сети, которую мы получаем; The certificate, asymmetric key, or private key file does not exist or has invalid format.

Возможно, я ошибочно предполагаю, что сначала нужно добавить ключ, если я добавляю сборку, а затем что-то делаю в соответствии с CREATE ASYMMETRIC KEY ManagedAsymmetricKey FROM ASSEMBLY [workingDB].[dbo].[Managed]?

Ответы [ 2 ]

5 голосов
/ 03 июля 2012

Вы можете использовать следующие шаги, чтобы заставить его работать:

  • запустить оператор создания сборки с SAFE allow_set (даже если сборка требует выполнения UNSAFE для выполнения)
  • создать асимметричный ключ из сборки
  • брось свою сборку
  • создать логин с помощью асимметричного ключа
  • предоставить права входа небезопасной сборки

    CREATE ASSEMBLY [Managed]
    AUTHORIZATION [dbo]
    FROM 0x4D5A....
    WITH PERMISSION_SET = SAFE
    
    CREATE ASYMMETRIC KEY ManagedAsymmetricKey FROM ASSEMBLY [Managed]
    
    DROP ASSEMBLY [Managed]
    
    CREATE LOGIN CLRLogin FROM ASYMMETRIC KEY ManagedAsymmetricKey
    
    GRANT UNSAFE ASSEMBLY TO CLRLogin
    
2 голосов
/ 30 января 2012

FROM FILE = всегда с точки зрения SQL Server. Вам нужно будет скопировать сертификат на локальный диск на сервере базы данных.

...