Загрузка сертификата из хранилища ключей Azure с использованием пользовательского расширения сценария - PullRequest
0 голосов
/ 04 июня 2019

Я создаю виртуальную машину с использованием python и использую расширение собственного сценария для загрузки сертификата внутри виртуальной машины, а затем сохраняю его в сертификате доверенного корневого сертификата локального компьютера.

Единственный мой запрос в Интернете - это очень ограниченный ресурс, доступный для загрузки сертификатов из хранилища ключей Azure. Все предлагают войти в систему, а затем использовать для загрузки командлет, который не подходит для расширения пользовательских сценариев.

Ниже приведен пример командлета powershell, который запрашивает вход в систему и затем загружает сертификат. Но поскольку мы запускаем собственное расширение скрипта, мы не сможем пройти аутентификацию.

$vaultName = "YOUR-KEYVAULT-NAME"
$certificateName = "YOUR-CERTIFICATE-NAME"
$pfxPath = [Environment]::GetFolderPath("Desktop") + "\$certificateName.pfx"
$password = "YOUR-CERTIFICATE-PASSWORD"
$pfxSecret = Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certificateName
$pfxUnprotectedBytes = [Convert]::FromBase64String($pfxSecret.SecretValueText)
$pfx = New-Object Security.Cryptography.X509Certificates.X509Certificate2
$pfx.Import($pfxUnprotectedBytes, $null, [Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)
$pfxProtectedBytes = $pfx.Export([Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $password)
[IO.File]::WriteAllBytes($pfxPath, $pfxProtectedBytes)

1 Ответ

1 голос
/ 04 июня 2019

Вы можете создать приложение AD в Azure Ad и использовать субъект службы для входа в систему с помощью неинтерактивного входа.

Выполните следующие действия:

1. Создайте приложение Azure Active Directory и создайте секрет для приложения, сохраните секрет самостоятельно и получите значения для входа в систему .

2. Перейдите к вашему keyvault на портале -> Access policies -> Add new -> Select principal (просто найдите имя вашего приложения AD, если вы создадите приложение AD, оно создаст службу Принципал в вашем арендаторе автоматически) -> выберите правильный Secret/Key/Certificate permissions (это зависит от того, какую операцию вы будете выполнять, в этом случае вам нужно выбрать Get в Secret permissions, также вы можете легко выбрать все) -> нажмите OK -> Save.

3. После этого у участника службы будет разрешение на запуск Get-AzureKeyVaultSecret, вам просто нужно использовать его для входа в систему без интерактивного доступа.

$azureAplicationId ="Azure AD Application Id"
$azureTenantId= "Your Tenant Id"
$azurePassword = ConvertTo-SecureString "your AD App secret" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId , $azurePassword)
Add-AzureRmAccount -Credential $psCred -TenantId $azureTenantId  -ServicePrincipal 

Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certificateName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...