标签: azure-managed-identity

Azure Keyvault通过ARM添加功能MSI

我认为托管服务标识是一个伟大的概念,我喜欢keyvault.然而:

当我使用增量资源组部署使用脚本时:

为简洁起见,修改了样本

{
      "type": "Microsoft.KeyVault/vaults",
      "name": "[parameters('keyvaultName')]",
      "apiVersion": "2015-06-01",
      "properties": {            
        "accessPolicies": [
          {
            "objectId": "[reference(parameters('functionAppName'), '2016-08-01', 'Full').identity.principalId]",
            "permissions": {
              "keys": [],
              "secrets": [
                "Get"
              ]
            }
          }
        ]
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', parameters('functionAppName'))]"
      ]
    },
    {
      "apiVersion": "2016-08-01",
      "type": "Microsoft.Web/sites",
      "name": "[parameters('functionAppName')]",
      "kind": "functionapp",
      "identity": {
        "type": "SystemAssigned"
      },
    }
Run Code Online (Sandbox Code Playgroud)

它成功部署并将MSI添加到keyvault,但是 -

它吹走了已经分配的访问策略.arm是否可以保留accessPolicies并仅添加/更新匹配的策略?

如果没有这个,就不可能使用MSI完全编写部署脚本,并将主体分配给keyvault.

我错过了什么吗?

azure azure-keyvault azure-managed-identity

6
推荐指数
1
解决办法
1337
查看次数

如何将变量传递给 azure devops 管道中的 SqlAzureDacpacDeployment@1 任务

我正在尝试授予应用程序访问数据库的权限。其中一个步骤要求必须在数据库上运行创建用户的脚本。我通过 azureSqlAzureDacpacDeployment@1 任务的管道执行此操作。

使用托管标识保护来自应用服务的 Azure SQL 数据库连接

- task: SqlAzureDacpacDeployment@1
      inputs:
        azureSubscription: 'xxxxxxxx (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)'
        AuthenticationType: 'aadAuthenticationIntegrated'
        ServerName: '$(SqlServerName)'
        DatabaseName: '$(SqlDatabaseName)'
        deployType: 'InlineSqlTask'
        SqlInline: |
          CREATE USER [$(AppName)] FROM EXTERNAL PROVIDER;
          ALTER ROLE db_datareader ADD MEMBER [$(AppName)];
          ALTER ROLE db_datawriter ADD MEMBER [$(AppName)];
          GO
        InlineAdditionalArguments: '-v $(ApiAppName)'
        IpDetectionMethod: 'AutoDetect'

ApiAppName = 'AppName=MyApplication'

##[error]The format used to define the new variable for Invoke-Sqlcmd cmdlet is invalid. 
Please use the 'var=value' format for defining a new variable.Check out how to troubleshoot 
failures at …
Run Code Online (Sandbox Code Playgroud)

azure azure-sql-database azure-devops azure-pipelines azure-managed-identity

6
推荐指数
1
解决办法
2999
查看次数

如何使用托管标识为逻辑应用程序创建与 Azure KeyVault 的 Api 连接

设想

您好,我想创建Logic App一个从Azure KeyVault保管库获取秘密并向 API 发送经过身份验证的请求的方法。

问题

我收到:The workflow connection parameter 'keyvault' is not valid. The API connection 'keyvault' is not configured to support managed identity.在 ARM 部署期间。如何Microsoft.Web/Connections使用 ARM 模板中的托管身份进行创建。文档中没有有关它的信息:apiConnectionlogicapp -MSI

重现

{
  "type": "Microsoft.Web/connections",
  "apiVersion": "2016-06-01",
  "name": "[variables('KeyVault_Connection_Name')]",
  "location": "[variables('location')]",
  "kind": "V1",
  "properties": {
    "api": {
      "id": "[concat('/subscriptions/', variables('subscriptionId'), '/providers/Microsoft.Web/locations/', variables('location'), '/managedApis/', 'keyvault')]"
    },
    "parameterValues": {
      "vaultName": "[variables('keyVaultName')]"
    },
    "displayName": "[variables('KeyVault_Display_Connection_Name')]"
  }
},
{
  "type": "Microsoft.Logic/workflows",
  "apiVersion": "2017-07-01",
  "name": "[variables('logicAppName')]", …
Run Code Online (Sandbox Code Playgroud)

azure-resource-manager azure-logic-apps azure-keyvault azure-managed-identity

6
推荐指数
2
解决办法
5648
查看次数

系统分配托管标识的 Azure ARM 角色分配首次运行失败

我的目标是部署一个具有系统管理标识该标识的角色分配的逻辑应用。优选地,这在一个 ARM 模板中完成。

我的设置第一次运行失败,但连续运行成功。如果我错了,请纠正我,但我认为其原因是角色分配的部署发生在逻辑应用的托管标识“准备好”之前,因此我第一次部署时收到以下错误模板。第二次部署模板时,我没有收到此错误,可能是因为当时身份已经存在。

{
  "code": "DeploymentFailed",
  "message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.",
  "details": [
    {
      "code": "PrincipalNotFound",
      "message": "Principal *** does not exist in the directory ***."
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的模板(为简洁起见删除了逻辑应用定义)。在这种情况下,逻辑应用的标识需要访问位于另一个资源组中的存储帐户。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "logicAppName": {
            "type": "string"
        },
        "storageAccountResourceGroup": {
            "type": "String"
        },
        "storageAccountName": {
            "type": "String"
        }
    },
    "variables": {
        "logicAppResourceId": "[resourceId('Microsoft.Logic/workflows', parameters('logicAppName'))]",
        "Storage Blob Data Contributor": …
Run Code Online (Sandbox Code Playgroud)

azure azure-resource-manager azure-managed-identity

6
推荐指数
1
解决办法
2811
查看次数

可以在本地使用“用户分配的托管身份”吗?

User Assigned Managed Identity我正在尝试在我们的一个应用程序中使用 a 。我还了解了 之间的差异System Assigned Managed Identity and User Assigned Managed Identity

我很清楚,aSystem Assigned Managed Identity不能在本地使用,因为您要为 Azure 资源分配身份。

不过我不清楚 a 是否User Assigned Managed Identity可以在本地使用。我唯一能找到的是以下内容:

在此输入图像描述

在我的场景中,我想从 Azure Key Vault 读取一些机密。我创建了一个用户分配的托管身份,并在 Key Vault 上配置了访问策略,以向该身份授予必要的权限。考虑到我使用此身份来访问 Azure Key Vault(这是一种 Azure 资源),我的期望是,无论我的代码在何处运行(使用 JetBrains Rider 作为我的 IDE),它都应该可以工作。

但是,当我尝试做类似的事情时:

var managedIdentityCredential = new ManagedIdentityCredential("managed-identity-id");
SecretClient secretClient = new(new Uri("https://mykeyvault.vault.azure.net/"), managedIdentityCredential);
KeyVaultSecret secret = await secretClient.GetSecretAsync(key);
Run Code Online (Sandbox Code Playgroud)

当我在本地运行代码时,收到错误Azure.Identity.CredentialUnavailableException消息:ManagedIdentityCredential authentication unavailable. No Managed Identity endpoint found

Azure.Identity.CredentialUnavailableException: …
Run Code Online (Sandbox Code Playgroud)

azure azure-active-directory azure-managed-identity

6
推荐指数
1
解决办法
7616
查看次数

Azure 托管 IDentity - 本地应用程序

  1. 我们有几个使用 .NET 构建的应用程序在 VMS(本地)中运行
  2. 所有应用程序都将注册到 Azure AD。
  3. 我们可以使用用户管理的身份从这些本地应用程序访问密钥保管库吗

提前致谢

azure-active-directory azure-managed-identity

6
推荐指数
1
解决办法
4654
查看次数

使用MSI从本地Service Fabric群集访问Key Vault

我想通过托管服务标识(MSI)从我的Service Fabric应用程序访问密钥库。我已经在Azure门户中设置的虚拟机规模上启用了MSI,并赋予了它对我的Key Vault资源的访问权限。这就像云中的魅力一样。但是,我的本地开发环境存在问题。

据我了解,我可以授予自己对Key Vault的访问权限并az login在Azure CLI中运行。,,这在本地Service Fabric群集中运行应用程序时不起作用。我认为这是因为本地群集在NETWORK SERVICE帐户下运行。

如何使用MSI从本地群集访问Key Vault?

azure azure-service-fabric azure-keyvault azure-managed-identity

5
推荐指数
1
解决办法
3227
查看次数

是否可以将系统分配的托管服务标识添加到 AAD 组?

我有一个使用 MSI 标识运行的 Azure 数据工厂 V2 服务。此服务需要访问包含数千个文件夹和数百万个文件的 Data Lake Gen 1。

为了提高效率,我们为数据湖的根分配了一个组,该组具有 RX 权限,并且这些权限在整个树中被继承和默认。

我想将上述 ADF MSI 添加到该组,但我无法弄清楚如何通过门户 AAD 刀片。

我可以直接将此 MSI 分配给数据湖,但它随后必须更新数百万个文件,这很慢且容易出错(刀片需要在应用权限时保持打开状态,并且由于网络原因,这通常会在几个小时内失败毛刺)。

标记。

azure-data-lake azure-managed-identity azure-data-factory-2

5
推荐指数
1
解决办法
1980
查看次数

Azure DevOps托管生成代理MSI

我有一个ASP.Net Core 2.1项目,其中的测试项目包含一些集成测试,这些测试要求/需要Azure托管服务身份访问才能成功运行(从KeyVault中获取机密)。我正在使用Azure DevOps VS2017托管生成代理来生成项目以部署到Azure App Service。我遇到的问题是,当测试在生成管道之后运行时,它们将失败,因为托管的生成代理上不支持MSI访问。我该如何设置托管构建代理所需的适当MSI访问权限?是否可以通过Powershell任务或等效方法来执行此操作?

谢谢!

azure azure-active-directory azure-devops azure-managed-identity

5
推荐指数
1
解决办法
1007
查看次数

在 Azure VM 上运行的 Docker 容器中使用 Azure 托管标识

我遇到一个问题,无法通过 Azure 容器实例和 Azure 容器应用程序访问公司的容器注册表,这与 VNET 和公司注册表的私有链接以及无法链接动态启动的容器有关。最终我想使用 Kubernetes 作为我的批处理作业工作负载的平台,但现在我必须找到一种快速解决方案,使其能够运行至少一个容器,并且可能在必要时手动扩展这些容器(一个可能就足够了)大部分的时间)。

现在,我想要实现这一目标的方法是简单地启动一个虚拟机(必要时可能还会启动更多虚拟机)并使用(Python)应用程序代码在此虚拟机上运行 Docker 容器。

现在我想知道 Docker 容器是否可以使用分配给虚拟机的托管身份(系统/用户分配的),如果可以,如何使用。当分配给 ACI 容器并在启动时分配用户管理的标识时,我可以轻松地使用如下代码:

default_credential = DefaultAzureCredential()
q_client = QueueClient(
  credential=default_credential,
  queue_name='Queuename',
  accounrt_url='someurl'
)
Run Code Online (Sandbox Code Playgroud)

并能够访问 - 例如 - 这个队列。无需请求任何类型的令牌,无需指定任何类型的环境变量。

现在我怀疑这是否适用于在分配了用户身份的虚拟机中运行的 docker 容器,因为用户身份并未真正直接分配给 docker 容器。有什么办法仍然可以实现这一目标,还是这是一个愚蠢的差事,我现在应该只使用环境变量吗?我不太喜欢后者的想法,但我还没有找到一种以这种特殊方式使用托管身份的方法。

virtual-machine azure docker azure-managed-identity azure-vm

5
推荐指数
1
解决办法
2608
查看次数