【问题标题】:Can we access Azure key vault secrets within Azure Sql Database我们可以访问 Azure Sql 数据库中的 Azure 密钥保管库机密吗
【发布时间】:2021-09-12 08:59:01
【问题描述】:

我正在 Azure Sql Database 中从 ADLS Gen2 执行 BULK INSERT。为此,我需要创建一个 DATABASE SCOPED CREDENTIAL 来定义 External Data Source,这需要按照 this doc 的 ADLS Gen2 的 SAS 令牌。根据我的要求,我必须访问不同的外部数据源。所以我想自动化这个(定义不同的外部数据源的过程)并使其动态化,因此我想从 Azure 密钥库访问这些 SAS 令牌。但是我没有找到任何解决方案或其他方法来绕过任何具体证据来排除这种方法。

如果有人有更好的方法来实现同样的目标,请告诉我。

【问题讨论】:

  • 你手边有 SAS 令牌吗?还是需要通过Script获取SAS令牌?
  • @DelliganeshS-MT ,没有 SAS 令牌将存储在 Azure Key Vault 中,我需要在 Azure Sql 中获取它。

标签: azure-sql-database bulkinsert azure-keyvault


【解决方案1】:

根据此article,您可以进行 HTTP 调用以进入 Key Vault 以通过 T-SQL 获取正确的 SAS 令牌。

【讨论】:

  • 感谢@MattSmall 的文章,开始学习新事物。但是,它不适用于我的情况,因为我没有使用 Azure Sql 数据库(托管实例)。作为最后一个选项,我可以将不同存储帐户的 SAS 令牌作为参数传递。
【解决方案2】:

无法从 Azure SQL 数据库访问 Azure Key Vault 中的机密。除非您在托管实例上,否则无法访问底层 CLR

您有一个 azure 密钥保管库详细信息 创建过程以添加动态外部数据源键值。

CREATE  proc usp_Create_External_DS @Identity VARCHAR(100), @Secret VARCHAR(100)
AS
BEGIN
SET  nocount  ON
DECLARE @command varchar(MAX);
PRINT  'ADL Identity & Secret: '+@Identity+  ','+@Secret;
SET @command =
'CREATE DATABASE SCOPED CREDENTIAL ADL_User WITH IDENTITY = '+ @Identity +',SECRET = '+@Secret
EXECUTE (@command);
PRINT  'ADL Scoped Credential Created';
END

请参考:sql server - Can we create Database Scoped credential inside T-SQL procedure on Azure - Stack Overflow

还可以使用 ALTER DATABASE SCOPED CREDENTIAL 命令来轮换存储密钥:

SQL Data Warehouse: ALTER DATABASE SCOPED CREDENTIAL command for rotating storage keys | Azure updates | Microsoft Azure

【讨论】:

  • 谢谢@DelliganeshS-MT,我已经决定使用这种方法,但是我遇到了另一个问题,因为我需要从 ADF 调用这个过程,并且我必须从外部(即从 ADF)传递秘密,秘密将可见(这是不安全的),因为它将记录在管道监视器部分。
猜你喜欢
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
  • 2018-06-29
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多