загружать файлы в учетную запись хранения без SAS - PullRequest
0 голосов
/ 17 марта 2020

Мне нужно загрузить файлы в учетную запись хранения без использования SAS.

Я создаю «регистрацию приложения» и предоставляю вкладчику доступ к учетной записи хранения.

Если я хочу загрузить файлы с powershell? Как мне это сделать?

Первый логин? а потом аскопия? Потому что я пробовал так, но попросил у меня токен

Ответы [ 3 ]

1 голос
/ 18 марта 2020

Azure Powershell , Azure CLI и AzCopy - это три разные вещи, вам не следует смешивать их вместе.

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

В вашей учетной записи хранения достаточно роли Contributor, но вы должны заметить, что на самом деле Contributor не имеет разрешения на прямой доступ к BLOB-объекту, он просто позволяет получить контекст хранилища. учетную запись, затем используйте контекст для доступа к BLOB-объекту, чтобы получить прямой доступ к BLOB-объекту, нам понадобится Storage Blob Data Owner/Contributor, как указано в комментарии.

Затем используйте приведенный ниже скрипт (Get-Credential в другом ответе - интерактивный способ, здесь - неинтерактивный способ, обычно мы используем принцип службы неинтерактивным способом для автоматизации)

$azureAplicationId ="<Application-ID>"
$azureTenantId= "<Tenant-ID>"
$azurePassword = ConvertTo-SecureString "<Application-secret>" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId , $azurePassword)
Connect-AzAccount -Credential $psCred -TenantId $azureTenantId -ServicePrincipal

$context = (Get-AzStorageAccount -ResourceGroupName <group-name> -Name <storageaccount-name>).Context
Set-AzStorageBlobContent -Container <container-name> -File <localfile-path> -Blob <blob-name> -Context $context
0 голосов
/ 18 марта 2020

Есть много способов сделать это. Поскольку вы упомянули PowerShell, я буду использовать его в этом примере.

# The following assumes you have already created the App registration.
# Either through the portal, PS, whatever.

$creds = Get-Credential

# Uername = Application ID
# password = The service principle secret. You need to create this.

Connect-AzAccount `
    -Credential $creds `
    -Tenant  $tenantId `
    -ServicePrincipal

# you will need to get the storage accounts context.
# There are a few ways to do this I usually just get the storage account

$context = (Get-AzStorageAccount -Name $saName -ResourceGroupName $rgName).Context

# You will need to give the App Registration permissions to upload the blob.
# If you don't assign permissions this cmdlet will fail.

Set-AzStorageBlobContent `
    -Container $containerName `
    -File $filePath `
    -Blob $blobName `
    -Context $context
0 голосов
/ 18 марта 2020

Вы можете использовать Принципала обслуживания или сертификат для входа в систему с помощью azcopy, а затем скопировать свои файлы в учетную запись хранения. Пожалуйста, обратитесь эта статья для получения дополнительной информации.

...