Хранилище ключей, созданное с использованием политики доступа с использованием BICEP, создает составную идентификацию

Я создаю инфраструктуру в Azure, используя BICEP для нашего корпоративного приложения. Наше приложение использует хранилища ключей для хранения и вызова секретов с помощью субъекта-службы (приложения).

Когда я создаю KV в BICEP и связываю с ним субъект-службу, он создается как составное удостоверение в политиках доступа KV. Мне нужно добавить его как «приложение», что и происходит, когда я добавляю его вручную через портал Azure.

Как добавить субъект-службу как приложение, а не как составное удостоверение?

resource accessPolicydev 'Microsoft.KeyVault/vaults/accessPolicies@2023-07-01' = {
  parent: keyvaultExisting
  name: 'add'
  properties: {
    accessPolicies: [
      {
        tenantId: tenantId
        objectId: objectId
        applicationId: applicationId
        permissions: {
          secrets: [
            'all'
          ]
          certificates: [
            'all'
          ]
          keys: [
            'all'
          ]
        }        
      }    
    ]
  }
}

вам просто нужно указать идентификатор объекта соответствующего субъекта-службы. удалить свойство applicationId

Thomas 28.06.2024 22:26

согласно документации, applicationid предназначен для потока от имени: Learn.microsoft.com/en-us/azure/templates/microsoft.keyvault‌​/…. это не идентификатор приложения вашего субъекта-службы

Thomas 28.06.2024 22:27

удалить applicationId

wenbo 01.07.2024 04:24

@Thomas, если я удалю идентификатор приложения, субъект-служба вообще не будет добавлен.

Damo 01.07.2024 11:51

это должен быть объектный идентификатор субъекта-службы, а не идентификатор объекта регистрации приложения.

Thomas 01.07.2024 12:23
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
5
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

ApplicationId должен быть указан для потока от имени согласно документации, поэтому вам не следует указывать его в политике доступа.

Кроме того, идентификатор объекта должен быть идентификатором объекта службы, а не идентификатором объекта регистрации приложения.

это должно работать:

provider microsoftGraph

param applicationId string  
param keyVaulName string
param tenantId string = subscription().tenantId

// Reference to the service principal
resource servicePrincipal 'Microsoft.Graph/[email protected]' existing = {
  appId: applicationId
}

// Reference to key vault
resource keyVault 'Microsoft.KeyVault/vaults@2023-02-01' existing = {
  name: keyVaulName
}

// Create access policy
resource accessPolicy 'Microsoft.KeyVault/vaults/accessPolicies@2023-07-01' = {
  parent: keyVault
  name: 'add'
  properties: {
    accessPolicies: [
      {
        tenantId: tenantId
        objectId: servicePrincipal.id
        permissions: {
          secrets: [
            'all'
          ]
          certificates: [
            'all'
          ]
          keys: [
            'all'
          ]
        }        
      }    
    ]
  }
}

Вы были правы, я добавлял неправильный идентификатор объекта.

Damo 01.07.2024 15:10

Приятно слышать, что это работает для вас

Thomas 01.07.2024 21:45

Другие вопросы по теме

Похожие вопросы