New-AzSqlDatabaseImport 需要存储帐户访问密钥,无法通过 Entra ID 进行身份验证

问题描述 投票:0回答:1

我正在使用 Az PowerShell 命令

New-AzSqlDatabaseImport
testdb.bacpac
创建新的 Azure SQL 测试数据库,作为我的 Azure DevOps 部署管道的一部分。

testdb.bacpac
作为 blob 存储在存储帐户中,该命令可以使用访问密钥访问它,但出于安全原因,我现在决定在存储帐户上禁用帐户密钥访问。

所以,现在访问存储的唯一方法是通过 Entra ID 和 RBAC,但是

New-AzSqlDatabaseImport
似乎不支持这一点。我还有哪些其他选项可以导入此 bacpac?

azure azure-devops azure-powershell microsoft-entra-id
1个回答
0
投票

根据您的要求,您可以使用 AzureCLI@2 管道任务中的

az storage blob download
命令将
testdb.bacpac
文件从您的存储帐户下载到管道代理上的
System.DefaultWorkingDirectory
,然后导入
testdb.bacpac
在任务
SqlAzureDacpacDeployment@1
的帮助下。这是一个示例供您参考。

pool:
  vmImage: windows-latest

steps:
- task: AzureCLI@2
  inputs:
    azureSubscription: '$(ARMSvcCnn)'
    scriptType: 'ps'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az storage blob download `
          --account-name $(storageAccountName) `
          --container-name $(containerName) `
          --name testdb.bacpac `
          --file $(System.DefaultWorkingDirectory)\testdb.bacpac `
          --auth-mode login
- task: SqlAzureDacpacDeployment@1
  inputs:
    azureSubscription: '$(ARMSvcCnn)'
    AuthenticationType: 'servicePrincipal'
    ServerName: '$(serverName).database.azure.com'
    DatabaseName: 'NewDB-$(Build.BuildId)'
    deployType: 'DacpacTask'
    DeploymentAction: 'Import'
    BacpacFile: '$(System.DefaultWorkingDirectory)\testdb.bacpac'
    IpDetectionMethod: 'AutoDetect'

AzureCLI@2
任务和
SqlAzureDacpacDeployment@1
任务均根据 ARM 服务连接引用的底层服务主体(使用
Client Id
secret
)进行身份验证。因此,请确保服务主体有足够的权限来访问存储帐户和管理 SQL Server。

希望信息有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.