Руководство. Использование виртуальной машины и виртуальной машины Windows для доступа к ресурсам Azure
Управляемые удостоверения для ресурсов Azure — это функция идентификатора Microsoft Entra. Каждая служба Azure, которая поддерживает управляемые удостоверения для ресурсов Azure, используется в соответствии с собственной временной шкалой. Прежде чем начать работу, обязательно проверьте состояние доступности управляемых удостоверений для своего ресурса и ознакомьтесь с известными проблемами.
Необходимые компоненты
- Понимание управляемых удостоверений. См. дополнительные сведения об управляемых удостоверениях для ресурсов Azure.
- Учетная запись Azure. Зарегистрируйте бесплатную учетную запись.
- Разрешения владельца в соответствующей области (подписка или группа ресурсов) для выполнения необходимых действий по созданию ресурсов и управлению ролями. Если нуждаетесь в помощи с назначением ролей, прочитайте статью Назначение ролей Azure с помощью портала Azure.
- Виртуальная машина Windows, назначаемая системой управляемые удостоверения.
- Если вам нужно создать виртуальную машину для этого руководства, см. статью "Создание виртуальной машины с включенным удостоверением, назначаемое системой".
Получение доступа к Azure Data Lake Storage с помощью назначаемого системой управляемого удостоверения на виртуальной машине Windows
В этом руководстве показано, как использовать управляемое удостоверение, назначаемое системой, для виртуальной машины Windows для доступа к Azure Data Lake Store. Управляемые удостоверения автоматически управляются платформой Azure. Они позволяют приложению проходить проверку подлинности в службах, поддерживающих проверку подлинности Microsoft Entra, без необходимости вставлять учетные данные в код.
В этой статье вы узнаете, как выполнять следующие задачи.
- Предоставление виртуальной машине доступа к Azure Data Lake Store.
- Получение маркера доступа с использованием удостоверения виртуальной машины и получение доступа к Azure Data Lake Store с его помощью.
Включить
Включить управляемое удостоверение, назначаемое системой, можно одним щелчком мыши. Это можно сделать при создании виртуальной машины или в свойствах существующей виртуальной машины.
Чтобы включить управляемое удостоверение, назначаемое системой, для новой виртуальной машины, сделайте следующее:
Войдите на портал Azure.
Создайте виртуальную машину с включенным удостоверением, назначаемое системой.
Предоставление доступа
Вы можете предоставить виртуальной машине доступ к файлам и папкам в Azure Data Lake Store. Для выполнения этого шага можно использовать имеющееся хранилище Azure Data Lake Store или создать новое.
Чтобы создать хранилище озера данных с помощью портал Azure, ознакомьтесь с кратким руководством по Azure Data Lake Store. В документации по Azure Data Lake Store также есть краткие руководства, описывающие использование Azure CLI и Azure PowerShell.
В Azure Data Lake Store создайте новую папку и предоставьте ей разрешение для назначаемого системой удостоверения виртуальной машины. Удостоверению требуются права на чтение, запись и выполнение файлов в этой папке:
- На портале Azure щелкните Data Lake Store в области навигации слева.
- Выберите хранилище Data Lake Store, которое следует использовать для этого руководства.
- Щелкните Обозреватель данных на панели ввода команд.
- Выбрана корневая папка Data Lake Store. На панели команд щелкните Доступ.
- Выберите Добавить. В поле Выбор введите имя виртуальной машины, например DevTestVM. Выберите виртуальную машину из результатов поиска, а затем нажмите кнопку "Выбрать".
- Выберите " Выбрать разрешения", а затем "Чтение " и "Выполнить". Добавьте в эту папку и выберите только разрешение на доступ.
- Нажмите кнопку "ОК", а затем закройте колонку Access . Разрешения должны быть успешно добавлены.
- Затем создайте новую папку. Выберите новую папку на панели команд и присвойте новой папке имя. Например, TestFolder, а затем нажмите кнопку "ОК".
- Выберите созданную папку, а затем выберите Access на панели команд.
- Нажмите кнопку "Добавить", а затем в поле "Выбрать" введите имя виртуальной машины и нажмите кнопку "Выбрать".
- Выберите "Выбрать разрешения", а затем "Чтение", "Запись" и "Выполнить". Добавьте в эту папку и добавьте в качестве записи разрешения доступа и записи разрешений по умолчанию.
- Щелкните ОК. Разрешение должно быть успешно добавлено.
Теперь назначаемое системой управляемое удостоверение виртуальной машины сможет выполнять все операции с файлами в созданной папке. Сведения об управлении доступом к Data Lake Store см. в контроль доступа в Data Lake Store.
Доступ к данным
Azure Data Lake Store изначально поддерживает проверку подлинности Microsoft Entra, чтобы они могли напрямую принимать маркеры доступа, полученные с помощью управляемых удостоверений для ресурсов Azure. Чтобы пройти проверку подлинности в файловой системе Data Lake Store, вы отправляете маркер доступа, выданный идентификатором Microsoft Entra, в конечную точку файловой системы Data Lake Store в заголовке авторизации. Заголовок имеет формат Bearer <ACCESS_TOKEN_VALUE>
.
Дополнительные сведения о поддержке Data Lake Store для проверки подлинности Microsoft Entra см. в статье "Проверка подлинности с помощью Data Lake Store с помощью идентификатора Microsoft Entra".
Примечание.
Клиентские пакеты SDK файловой системы Data Lake Storage пока не поддерживают управляемые удостоверения для ресурсов Azure.
В этом руководстве выполняется аутентификация в файловой системе Data Lake Store посредством REST API с использованием PowerShell для выполнения запросов REST. Чтобы использовать назначаемое системой управляемое удостоверение виртуальной машины для проверки подлинности, нужно отправлять запросы с виртуальной машины.
На портале перейдите к Виртуальные машины, перейдите на виртуальную машину Windows. Затем в разделе "Обзор" выберите "Подключиться".
Введите имя пользователя и пароль , добавленные при создании виртуальной машины Windows.
Теперь, когда вы создали подключение к удаленному рабочему столу с виртуальной машиной, откройте PowerShell в удаленном сеансе.
С помощью командлета PowerShell
Invoke-WebRequest
выполните запрос к локальным управляемым удостоверениям для конечной точки ресурсов Azure, чтобы получить маркер доступа для Azure Data Lake Store. Идентификатор ресурса для Data Lake Store:https://datalake.azure.net/
. Data Lake точно соответствует идентификатору ресурса, поэтому косая черта важна.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -Method GET -Headers @{Metadata="true"}
Преобразуйте ответ из объекта JSON в объект PowerShell.
$content = $response.Content | ConvertFrom-Json
Извлеките маркер доступа из ответа.
$AccessToken = $content.access_token
Убедитесь, что все настроено правильно. С помощью командлета PowerShell
Invoke-WebRequest
выполните запрос к конечной точке REST Data Lake Store, чтобы получить список папок в корневой папке. Важно, чтобы строкаBearer
в заголовке авторизации содержит заглавную букву "B". Имя хранилища Data Lake Store можно найти в разделе Обзор области Data Lake Store на портале Azure.Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -Headers @{Authorization="Bearer $AccessToken"}
Успешный ответ выглядит следующим образом.
StatusCode : 200 StatusDescription : OK Content : {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY", "blockSize":0,"accessTime":1507934941392, "modificationTime":1507944835699,"replication":0, "permission":"770","ow..." RawContent : HTTP/1.1 200 OK Pragma: no-cache x-ms-request-id: b4b31e16-e968-46a1-879a-3474aa7d4528 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosniff Strict-Transport-Security: ma... Forms : {} Headers : {[Pragma, no-cache], [x-ms-request-id, b4b31e16-e968-46a1-879a-3474aa7d4528], [x-ms-webhdfs-version, 17.04.22.00], [Status, 0x0]...} Images : {} InputFields : {} Links : {} ParsedHtml : System.__ComObject RawContentLength : 556
Теперь попробуйте отправить файл в Data Lake Store. Сначала создайте файл для передачи.
echo "Test file." > Test1.txt
С помощью командлета PowerShell
Invoke-WebRequest
отправьте запрос в конечную точку REST Data Lake Store для отправки файла в созданную ранее папку. Этот запрос выполняется в два этапа.- Выполните запрос и получите перенаправление в место отправки файла.
- Отправьте файл . Не забудьте задать имя папки и файла соответствующим образом, если вы использовали разные значения, отличные от указанных в этом руководстве.
$HdfsRedirectResponse = Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
Если проверить значение ответа
$HdfsRedirectResponse
, оно должно иметь следующий вид.PS C:\> $HdfsRedirectResponse StatusCode : 307 StatusDescription : Temporary Redirect Content : {} RawContent : HTTP/1.1 307 Temporary Redirect Pragma: no-cache x-ms-request-id: b7ab492f-b514-4483-aada-4aa0611d12b3 ContentLength: 0 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosn... Headers : {[Pragma, no-cache], [x-ms-request-id, b7ab492f-b514-4483-aada-4aa0611d12b3], [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...} RawContentLength : 0
Выполните передачу, отправив запрос к конечной точке перенаправления.
Invoke-WebRequest -Uri $HdfsRedirectResponse.Headers.Location -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
Успешный ответ выглядит следующим образом.
StatusCode : 201 StatusDescription : Created Content : {} RawContent : HTTP/1.1 201 Created Pragma: no-cache x-ms-request-id: 1e70f36f-ead1-4566-acfa-d0c3ec1e2307 ContentLength: 0 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosniff Strict... Headers : {[Pragma, no-cache], [x-ms-request-id, 1e70f36f-ead1-4566-acfa-d0c3ec1e2307], [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...} RawContentLength : 0
Наконец, вы можете использовать другие API файловой системы Data Lake Store для добавления и скачивания файлов и многого другого.
Отключить
Чтобы отключить назначенное системой удостоверение на виртуальной машине, задайте значение отключено для состояния назначенного системой удостоверения.
Использование управляемого удостоверения, назначаемого системой, на виртуальной машине Windows для доступа к службе хранилища Azure
В этом руководстве описывается, как получить доступ к службе хранилища Azure, используя управляемое удостоверение, назначаемое системой, на виртуальной машине Windows. Узнайте следующие темы:
- создать контейнер больших двоичных объектов в учетной записи хранения;
- предоставить виртуальной машине Windows доступ на основе управляемого удостоверения, назначаемого системой, к учетной записи хранения;
- получить доступ и использовать его для вызова службы хранилища Azure.
Включить
Включить управляемое удостоверение, назначаемое системой, можно одним щелчком мыши. Это можно сделать при создании виртуальной машины или в свойствах существующей виртуальной машины.
Чтобы включить управляемое удостоверение, назначаемое системой, для новой виртуальной машины, сделайте следующее:
Войдите на портал Azure.
Создайте виртуальную машину с включенным удостоверением, назначаемое системой.
Создание учетной записи хранения
В этом разделе вы создадите учетную запись хранения.
Нажмите кнопку +Создать ресурс, найденную в левом верхнем углу портал Azure.
Щелкните Хранилище, а затем — Учетная запись хранения — BLOB-объект, файл, таблица, очередь.
В поле "Имя" введите имя учетной записи хранения.
Для параметра Модель развертывания выберите Resource Manager, а для поля Тип учетной записи — Хранилище (версия 1, общего назначения).
Убедитесь, что значения подписки и группы ресурсов соответствуют указанным при создании виртуальной машины на предыдущем шаге.
Нажмите кнопку создания.
Создание контейнера больших двоичных объектов и передача файла в учетную запись хранения
Так как файлам необходимо хранилище BLOB-объектов, нужно создать контейнер больших двоичных объектов, в котором будет храниться файл. Затем файл отправляется в контейнер больших двоичных объектов в новой учетной записи хранения.
Вернитесь к только что созданной учетной записи хранения.
В разделе "Служба BLOB-объектов" выберите "Контейнеры".
Выберите + Контейнер в верхней части страницы.
В поле "Создать контейнер" введите имя контейнера, а затем в параметре уровня общедоступного доступа сохраните значение по умолчанию.
С помощью редактора по своему усмотрению создайте на локальном компьютере файл с именем hello world.txt. Откройте файл и добавьте текст Hello world!, а затем сохраните его.
Выберите имя контейнера, чтобы отправить файл в только что созданный контейнер, а затем нажмите кнопку "Отправить".
В области отправки BLOB-объектов в разделе "Файлы" выберите значок папки и перейдите к файлу hello_world.txt на локальном компьютере. Затем выберите файл и отправьте его.
Предоставление доступа
В этом разделе показано, как предоставить виртуальной машине доступ к контейнеру службы хранилища Azure Вы можете использовать управляемое удостоверение, назначаемое системой, на виртуальной машине, чтобы извлечь данные в большом двоичном объекте службы хранилища Azure.
Вернитесь к только что созданной учетной записи хранения.
Выберите Управление доступом (IAM) .
Выберите Добавить>Добавить назначение ролей, чтобы открыть страницу Добавление назначения ролей.
Назначьте следующую роль. Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.
Параметр Значение Роль Читатель данных больших двоичных объектов хранилища Назначить доступ для Управляемое удостоверение Назначаемое системой Виртуальная машина Выбрать <ваша виртуальная машина>
Доступ к данным
служба хранилища Azure изначально поддерживает проверку подлинности Microsoft Entra, поэтому он может напрямую принимать маркеры доступа, полученные с помощью управляемого удостоверения. Этот подход использует интеграцию служба хранилища Azure с идентификатором Microsoft Entra ID и отличается от предоставления учетных данных в строка подключения.
Ниже приведен пример кода .NET для установки подключения к службе хранилища Azure. В примере используется маркер доступа, а затем считывается содержимое ранее созданного файла. Этот код должен выполняться на виртуальной машине, чтобы иметь доступ к конечной точке управляемого удостоверения виртуальной машины. Для использования метода с маркером доступа необходима платформа .NET Framework 4.6 или более поздней версии. Замените значение <URI to blob file>
на соответствующее. Вы можете получить это значение, если перейдете в созданный и отправленный в хранилище BLOB-объектов файл и скопируете URL-адрес в разделе свойств страницы обзора.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Web.Script.Serialization;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
namespace StorageOAuthToken
{
class Program
{
static void Main(string[] args)
{
//get token
string accessToken = GetMSIToken("https://storage.azure.com/");
//create token credential
TokenCredential tokenCredential = new TokenCredential(accessToken);
//create storage credentials
StorageCredentials storageCredentials = new StorageCredentials(tokenCredential);
Uri blobAddress = new Uri("<URI to blob file>");
//create block blob using storage credentials
CloudBlockBlob blob = new CloudBlockBlob(blobAddress, storageCredentials);
//retrieve blob contents
Console.WriteLine(blob.DownloadText());
Console.ReadLine();
}
static string GetMSIToken(string resourceID)
{
string accessToken = string.Empty;
// Build request to acquire MSI token
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=" + resourceID);
request.Headers["Metadata"] = "true";
request.Method = "GET";
try
{
// Call /token endpoint
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Pipe response Stream to a StreamReader, and extract access token
StreamReader streamResponse = new StreamReader(response.GetResponseStream());
string stringResponse = streamResponse.ReadToEnd();
JavaScriptSerializer j = new JavaScriptSerializer();
Dictionary<string, string> list = (Dictionary<string, string>)j.Deserialize(stringResponse, typeof(Dictionary<string, string>));
accessToken = list["access_token"];
return accessToken;
}
catch (Exception e)
{
string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
return accessToken;
}
}
}
}
В ответе содержится содержимое файла:
Hello world! :)
Отключить
Чтобы отключить назначенное системой удостоверение на виртуальной машине, задайте значение отключено для состояния назначенного системой удостоверения.
Использование управляемого удостоверения, назначаемого системой, на виртуальной машине Windows для доступа к службе хранилища Azure с помощью учетных данных SAS
В этом руководстве показано, как использовать назначаемое системой удостоверение виртуальной машины Windows для получения учетных данных SAS .
SAS службы обеспечивает возможность предоставления ограниченного доступа к объектам в учетной записи хранения в течение ограниченного времени и для определенной службы (в данном случае служба BLOB-объектов). SAS делает это без предоставления ключа доступа к учетной записи. Учетные данные SAS можно использовать как обычно для операций хранения; Например, при использовании пакета SDK для хранилища. В этом руководстве демонстрируется отправка и скачивание большого двоичного объекта с помощью служба хранилища Azure PowerShell.
Вы изучите следующие темы:
- Создание учетной записи хранилища
- предоставлять виртуальной машине доступ к подписанным URL-адресам учетной записи хранения в Resource Manager;
- получать маркер доступа с помощью удостоверения виртуальной машины и использовать его для извлечения SAS из Resource Manager.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Создание учетной записи хранилища
Если у вас еще нет учетной записи хранения, необходимо создать учетную запись хранения. В противном случае выполните следующие действия, чтобы предоставить управляемому удостоверению, назначенному системой, доступ виртуальной машины к учетным данным SAS существующей учетной записи хранения.
Выберите хранилище, а затем учетную запись хранения.
На панели "Создание учетной записи хранения" введите имя учетной записи хранения.
Убедитесь, что для модели развертывания и типа учетной записи задано значение Resource Manager и Общего назначения.
Убедитесь, что подписка и группа ресурсов соответствуют элементам, указанным при создании виртуальной машины на предыдущем шаге.
Выберите "Создать", чтобы создать учетную запись хранения.
Создание контейнера
Далее в руководстве вы отправите и скачайте файл в новую учетную запись хранения. Так как для файлов требуется хранилище BLOB-объектов, необходимо создать контейнер BLOB-объектов для хранения файла.
Вернитесь к только что созданной учетной записи хранения.
Выберите ссылку "Контейнеры" на левой панели в разделе "Служба BLOB-объектов".
Выберите +Контейнер в верхней части страницы, а затем появится панель нового контейнера .
Присвойте контейнеру имя, определите уровень доступа, а затем нажмите кнопку "ОК". Указанное здесь имя используется далее в руководстве.
Предоставление управляемому удостоверению, назначаемому системой, виртуальной машины доступа к SAS хранилища
служба хранилища Azure изначально не поддерживает проверку подлинности Microsoft Entra. Тем не менее управляемое удостоверение службы можно использовать для извлечения SAS хранилища из Resource Manager и последующего доступа к этому хранилищу. На этом шаге мы предоставим управляемому удостоверению, назначаемому системой, виртуальной машины доступ к SAS учетной записи хранения.
Вернитесь к только что созданной учетной записи хранения.
Выберите Управление доступом (IAM) .
Выберите Добавить>Добавить назначение ролей, чтобы открыть страницу Добавление назначения ролей.
Назначьте следующую роль. Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.
Параметр Значение Роль Участник учетной записи хранения Назначить доступ для Управляемое удостоверение Назначаемое системой Виртуальная машина Выбрать <ваша виртуальная машина Windows>
Получение маркера доступа с помощью удостоверения виртуальной машины и его использование для вызова Azure Resource Manager
В оставшейся части этого руководства вы работаете с виртуальной машины. В этой части необходимо использовать командлеты PowerShell Для Azure Resource Manager. Если у вас нет PowerShell, скачайте последнюю версию , прежде чем продолжить.
В портал Azure перейдите к Виртуальные машины, перейдите к виртуальной машине Windows, а затем на странице обзора выберите "Подключиться" вверху.
Введите имя пользователя и пароль, добавленные при создании виртуальной машины Windows.
Установите подключение к удаленному рабочему столу с виртуальной машиной.
Откройте PowerShell в удаленном сеансе, а затем используйте командлет PowerShell
Invoke-WebRequest
, чтобы получить маркер Azure Resource Manager из локального управляемого удостоверения для конечной точки ресурсов Azure.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -Method GET -Headers @{Metadata="true"}
Примечание.
Значение
resource
параметра должно совпадать с ожидаемым идентификатором Microsoft Entra ID. Если используется идентификатор ресурса Resource Manager, добавьте косую черту после универсального кода ресурса (URI).Затем извлеките
content
элемент, который хранится в формате нотации объектов JavaScript (JSON) в объекте$response
.$content = $response.Content | ConvertFrom-Json
Затем извлеките маркер доступа из ответа.
$ArmToken = $content.access_token
Получение учетных данных SAS из Azure Resource Manager для обращения к хранилищу
Наконец, используйте PowerShell для вызова Resource Manager с помощью маркера доступа, полученного в предыдущем разделе. Этот маркер используется для создания учетных данных SAS хранилища. После получения учетных данных SAS можно вызвать другие операции хранения.
Для этого запроса используйте следующие параметры HTTP-запроса для создания учетных данных SAS:
{
"canonicalizedResource":"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>",
"signedResource":"c", // The kind of resource accessible with the SAS, in this case a container (c).
"signedPermission":"rcw", // Permissions for this SAS, in this case (r)ead, (c)reate, and (w)rite. Order is important.
"signedProtocol":"https", // Require the SAS be used on https protocol.
"signedExpiry":"<EXPIRATION TIME>" // UTC expiration time for SAS in ISO 8601 format, for example 2017-09-22T00:06:00Z.
}
Параметры, приведенные здесь, включены в текст POST запроса учетных данных SAS. Дополнительные сведения о параметрах для создания учетных данных SAS см. в справочнике по REST службы списков.
Преобразуйте параметры в JSON, а затем вызовите конечную точку хранилища
listServiceSas
, чтобы создать учетные данные SAS:$params = @{canonicalizedResource="/blob/<STORAGE-ACCOUNT-NAME>/<CONTAINER-NAME>";signedResource="c";signedPermission="rcw";signedProtocol="https";signedExpiry="2017-09-23T00:00:00Z"} $jsonParams = $params | ConvertTo-Json
$sasResponse = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE-ACCOUNT-NAME>/listServiceSas/?api-version=2017-06-01 -Method POST -Body $jsonParams -Headers @{Authorization="Bearer $ArmToken"}
Примечание.
URL-адрес учитывает регистр, поэтому убедитесь, что вы используете тот же случай, используемый при именовавшемся группе ресурсов, включая верхний регистр "G" в
resourceGroups
.Затем извлеките учетные данные SAS из ответа:
$sasContent = $sasResponse.Content | ConvertFrom-Json $sasCred = $sasContent.serviceSasToken
При проверке учетных данных SAS вы увидите следующее:
PS C:\> $sasCred sv=2015-04-05&sr=c&spr=https&se=2017-09-23T00%3A00%3A00Z&sp=rcw&sig=JVhIWG48nmxqhTIuN0uiFBppdzhwHdehdYan1W%2F4O0E%3D
Создайте файл с именем test.txt. Затем используйте учетные данные SAS для проверки подлинности с помощью командлета
New-AzStorageContent
, отправьте файл в контейнер BLOB-объектов, а затем скачайте файл.echo "This is a test text file." > test.txt
Сначала установите командлеты службы хранилища Azure с помощью
Install-Module Azure.Storage
, Затем отправьте созданный большой двоичный объект с помощью командлета PowerShellSet-AzStorageBlobContent
:$ctx = New-AzStorageContext -StorageAccountName <STORAGE-ACCOUNT-NAME> -SasToken $sasCred Set-AzStorageBlobContent -File test.txt -Container <CONTAINER-NAME> -Blob testblob -Context $ctx
Ответ:
ICloudBlob : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob BlobType : BlockBlob Length : 56 ContentType : application/octet-stream LastModified : 9/21/2017 6:14:25 PM +00:00 SnapshotTime : ContinuationToken : Context : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext Name : testblob
Можно также скачать отправленный большой двоичный объект с помощью командлета PowerShell
Get-AzStorageBlobContent
.Get-AzStorageBlobContent -Blob testblob -Container <CONTAINER-NAME> -Destination test2.txt -Context $ctx
Ответ:
ICloudBlob : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob BlobType : BlockBlob Length : 56 ContentType : application/octet-stream LastModified : 9/21/2017 6:14:25 PM +00:00 SnapshotTime : ContinuationToken : Context : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext Name : testblob
Использование управляемого удостоверения, назначаемого системой виртуальной машины Windows, для доступа к База данных SQL Azure
В этом руководстве описывается, как получить доступ к Базе данных SQL Azure с помощью назначаемого системой удостоверения виртуальной машины Windows. Управляемые удостоверения служб автоматически управляются Azure и позволяют выполнять проверку подлинности в службах, поддерживающих проверку подлинности Microsoft Entra, без необходимости вставлять учетные данные в код.
Вы изучите следующие темы:
- Предоставление виртуальной машине доступа к Базе данных SQL Azure
- Включение проверки подлинности Microsoft Entra
- Создание в базе данных автономного пользователя, который представляет назначаемое системой удостоверение виртуальной машины
- Получение маркера доступа с использованием удостоверения виртуальной машины и отправка запроса в Базу данных SQL Azure с его помощью
Включить
Включить управляемое удостоверение, назначаемое системой, можно одним щелчком мыши. Это можно сделать при создании виртуальной машины или в свойствах существующей виртуальной машины.
Чтобы включить управляемое удостоверение, назначаемое системой, для новой виртуальной машины, сделайте следующее:
Войдите на портал Azure.
Создайте виртуальную машину с включенным удостоверением, назначаемое системой.
Предоставление доступа
Чтобы предоставить виртуальной машине доступ к базе данных в База данных SQL Azure, используйте существующий логический СЕРВЕР SQL Server или создайте новый. Чтобы создать новый сервер и базу данных с помощью портал Azure, выполните краткое руководство по SQL Azure. В документации по SQL Azure также есть краткие руководства, описывающие использование Azure CLI и Azure PowerShell.
Выполните следующие действия, чтобы предоставить виртуальной машине доступ к базе данных:
- Включите проверку подлинности Microsoft Entra для сервера.
- Создание в базе данных автономного пользователя, который представляет назначаемое системой удостоверение виртуальной машины.
Включение проверки подлинности Microsoft Entra
Чтобы настроить проверку подлинности Microsoft Entra, выполните следующие действия.
- В портал Azure выберите SQL Server в области навигации слева.
- Выберите SQL Server, который вы хотите включить для проверки подлинности Microsoft Entra.
- В разделе колонки Параметры выберите Администратор Active Directory.
- На панели команд щелкните Задать администратора.
- Выберите учетную запись пользователя Microsoft Entra, чтобы сделать администратора сервера, и нажмите кнопку "Выбрать".
- В командной строке выберите Сохранить.
Создание автономного пользователя
В этом разделе показано, как создать автономного пользователя в базе данных, представляющей удостоверение, назначенное системой виртуальной машины. На этом шаге необходимо установить Microsoft SQL Server Management Studio (SSMS). Прежде чем приступить к работе, ознакомьтесь со следующими статьями для фона интеграции Microsoft Entra:
- Универсальная аутентификация для Базы данных SQL и Azure Synapse Analytics (поддержка SSMS для MFA)
- Настройка проверки подлинности Microsoft Entra с помощью База данных SQL или Azure Synapse Analytics
Для баз данных SQL требуются уникальные отображаемые имена идентификатора Microsoft Entra. При этом учетные записи Microsoft Entra, такие как пользователи, группы и субъекты-службы (приложения), а имена виртуальных машин, включенные для управляемого удостоверения, должны быть уникальным образом определены в идентификаторе Microsoft Entra, относящиеся к соответствующим отображаемым именам. SQL проверяет отображаемые имена идентификатора Microsoft Entra во время создания таких пользователей T-SQL. Если отображаемые имена не являются уникальными, команда завершается ошибкой и запрашивает указать уникальное отображаемое имя идентификатора Microsoft Entra для каждой учетной записи.
Создание автономного пользователя
Откройте SQL Server Management Studio.
В диалоговом окне Подключение к серверу в поле Имя сервера введите имя сервера.
В поле Authentication (Аутентификация) выберите Active Directory — универсальная с поддержкой MFA.
В поле "Имя пользователя" введите имя учетной записи Microsoft Entra, заданной администратором сервера, например[email protected].
Выберите Параметры.
В поле Подключение к базе данных введите имя несистемной базы данных, которую требуется настроить.
Нажмите кнопку "Подключиться", а затем завершите процесс входа.
В обозревателе объектов разверните папку Базы данных.
Щелкните правой кнопкой мыши базу данных пользователя, а затем выберите новый запрос.
В окне запроса введите следующую строку и на панели инструментов нажмите кнопку Выполнить:
Примечание.
В приведенной ниже команде
VMName
— это имя виртуальной машины, для которой вы ранее настроили назначаемое системой удостоверение.CREATE USER [VMName] FROM EXTERNAL PROVIDER
Команда должна завершиться успешно, создав автономного пользователя для удостоверения, назначаемого системой виртуальной машины.
Снимите окно запроса, введите следующую строку и выберите "Выполнить " на панели инструментов:
Примечание.
VMName
В следующей команде указано имя виртуальной машины, в которой включено удостоверение, назначенное системой, в разделе предварительных требований.Если возникла ошибка "Субъект
VMName
имеет повторяющееся отображаемое имя", добавьте инструкцию CREATE USER с помощью WITH OBJECT_ID='xxx".ALTER ROLE db_datareader ADD MEMBER [VMName]
Команда должна завершиться успешно, предоставив автономному пользователю возможность читать всю базу данных.
Теперь код, запущенный на виртуальной машине, может с помощью назначаемого системой управляемого удостоверения получить маркер и использовать его для аутентификации на сервере.
Доступ к данным
В этом разделе показано, как получить маркер доступа с помощью управляемого удостоверения, назначаемого системой виртуальной машины, и использовать его для вызова SQL Azure. Azure SQL изначально поддерживает проверку подлинности Microsoft Entra, поэтому он может напрямую принимать маркеры доступа, полученные с помощью управляемых удостоверений для ресурсов Azure. Этот метод не требует предоставления учетных данных в строка подключения.
Ниже приведен пример кода .NET для открытия подключения к SQL с помощью проверки подлинности управляемого удостоверения Active Directory. Этот код должен выполняться на виртуальной машине, чтобы обеспечить возможность доступа к конечной точке назначаемого системой управляемого удостоверения виртуальной машины.
для использования этого метода требуется платформа .NET Framework версии 4.6.2 или более поздней версии или .NET Core 3.1 или более поздней версии. Замените значения AZURE-SQL-SERVERNAME и DATABASE соответствующим образом и добавьте ссылку NuGet в библиотеку Microsoft.Data.SqlClient.
using Microsoft.Data.SqlClient;
try
{
//
// Open a connection to the server using Active Directory Managed Identity authentication.
//
string connectionString = "Data Source=<AZURE-SQL-SERVERNAME>; Initial Catalog=<DATABASE>; Authentication=Active Directory Managed Identity; Encrypt=True";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
Примечание.
Управляемые удостоверения можно использовать при программировании на других языках, воспользовавшись нашими пакетами SDK.
Кроме того, используйте PowerShell, чтобы протестировать сквозную настройку без необходимости писать и развертывать приложение на виртуальной машине.
На портале перейдите к Виртуальные машины, перейдите на виртуальную машину Windows, а затем в разделе "Обзор" выберите "Подключиться".
Введите учетные данные администратора виртуальной машины, добавленные при создании виртуальной машины Windows.
Теперь, когда вы создали подключение к удаленному рабочему столу с виртуальной машиной, откройте PowerShell в удаленном сеансе.
С помощью командлета PowerShell
Invoke-WebRequest
выполните запрос к конечной точке локального управляемого удостоверения, чтобы получить маркер доступа для SQL Azure.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F' -Method GET -Headers @{Metadata="true"}
Преобразуйте ответ из объекта JSON в объект PowerShell.
$content = $response.Content | ConvertFrom-Json
Извлеките маркер доступа из ответа.
$AccessToken = $content.access_token
Установите подключение к серверу. Не забудьте заменить значения AZURE-SQL-SERVERNAME и DATABASE.
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Data Source = <AZURE-SQL-SERVERNAME>; Initial Catalog = <DATABASE>; Encrypt=True;" $SqlConnection.AccessToken = $AccessToken $SqlConnection.Open()
Затем создайте и отправьте запрос на сервер. Не забудьте заменить значение для TABLE.
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = "SELECT * from <TABLE>;" $SqlCmd.Connection = $SqlConnection $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $SqlAdapter.Fill($DataSet)
Наконец, изучите значение $DataSet.Tables[0]
для просмотра результатов запроса.
Отключить
Чтобы отключить назначенное системой удостоверение на виртуальной машине, задайте значение отключено для состояния назначенного системой удостоверения.
Использование назначенного системой управляемого удостоверения на виртуальной машине Windows для доступа к Azure Key Vault
В этом руководстве показано, как получить доступ к Azure Key Vault с помощью назначаемого системой управляемого удостоверения для виртуальной машины Windows. Key Vault позволяет клиентскому приложению использовать секрет для доступа к ресурсам, не защищенным идентификатором Microsoft Entra. Управляемые удостоверения автоматически управляются платформой Azure. Они позволяют выполнять проверку подлинности в службах, поддерживающих проверку подлинности Microsoft Entra, не включая сведения о проверке подлинности в коде.
Вы изучите следующие темы:
- предоставлять виртуальной машине доступ к секрету в Key Vault;
- получать маркер доступа с помощью удостоверения виртуальной машины и использовать его для получения секрета из Key Vault.
Создание Хранилища ключей
Совет
Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.
В этом разделе показано, как предоставить виртуальной машине доступ к секрету в Key Vault. При использовании управляемых удостоверений для ресурсов Azure код может получить маркеры доступа для проверки подлинности в ресурсах, поддерживающих проверку подлинности Microsoft Entra.
Однако не все службы Azure поддерживают проверку подлинности Microsoft Entra. Чтобы использовать управляемые удостоверения для ресурсов Azure с такими службами, сохраните учетные данные службы в Azure Key Vault и используйте управляемое удостоверение виртуальной машины для доступа к Key Vault и получения учетных данных.
Сначала необходимо создать Key Vault и предоставить управляемому удостоверению, назначаемого системой, управляемому удостоверению виртуальной машины.
Войдите на портал Azure.
В верхней части левой панели навигации нажмите кнопку "Создать ресурс".
В поле "Поиск Marketplace" введите в Key Vault и нажмите клавишу ВВОД.
Выберите Key Vault из результатов и нажмите кнопку "Создать".
Укажите имя нового хранилища ключей.
Заполните все необходимые сведения. Обязательно выберите подписку и группу ресурсов, используемые для работы с этим руководством.
Выберите " Просмотр и создание".
Нажмите кнопку создания.
Создание секрета
Затем необходимо добавить секрет в Key Vault, чтобы получить его позже с помощью кода, выполняемого на виртуальной машине. В этом разделе вы используете PowerShell, но те же понятия применяются к любому коду, выполняемому на виртуальной машине.
Вернитесь к только что созданному экземпляру Key Vault.
Выберите "Секреты", а затем нажмите кнопку "Добавить".
Выберите Создать/импортировать.
На экране "Создание секрета" в параметрах "Отправить" выберите "Вручную".
Введите имя и значение для секрета. Значение может быть любым.
Не указывайте дату активации и окончания срока действия и для параметра Включено оставьте значение Да.
Щелкните Создать, чтобы создать секрет.
Предоставление доступа
Управляемое удостоверение, используемое виртуальной машиной, должно быть предоставлено доступ для чтения секрета, в хранилище ключей.
Вернитесь к только что созданному экземпляру Key Vault.
Выберите Политика доступа в меню слева.
Выберите Добавить политику доступа.
В разделе "Добавление политики доступа" в разделе "Настройка из шаблона (необязательно)" выберите "Управление секретами" в раскрывающемся меню.
Выберите "Выбрать субъект", а затем в поле поиска введите имя созданной ранее виртуальной машины.
Выберите виртуальную машину в списке результатов и нажмите кнопку "Выбрать".
Выберите Добавить.
Выберите Сохранить.
Доступ к данным
В этом разделе показано, как получить маркер доступа с помощью удостоверения виртуальной машины и использовать его для получения секрета из Key Vault. Если вы не установили версию PowerShell 4.3.1 или выше, загрузите и установите последнюю версию.
Примечание.
Метод использования PowerShell для проверки подлинности и извлечения секрета предпочтителен в сценариях, когда управляемые удостоверения требуются специально или при внедрении процесса в код приложения.
Во-первых, используйте управляемое удостоверение, назначаемое системой виртуальной машины, чтобы получить маркер доступа для проверки подлинности в Key Vault:
- На портале перейдите к Виртуальные машины и перейдите к виртуальной машине Windows, а затем в разделе "Обзор" выберите "Подключиться".
- Введите имя пользователя и пароль, добавленные при создании виртуальной машины Windows.
- Теперь, когда вы создали подключение к удаленному рабочему столу с виртуальной машиной, откройте PowerShell в удаленном сеансе.
- Отправьте веб-запрос к клиенту в PowerShell, чтобы получить токен для локального узла на конкретный порт для виртуальной машины.
Примечание.
При использовании суверенного облака, например GCC-H, используйте конечную точку vault.usgovcloudapi.net
вместо vault.azure.net
командлета PowerShell.
Пример запроса PowerShell:
$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -Method GET -Headers @{Metadata="true"}
Примечание.
При работе с суверенными облаками необходимо внести корректировки в конечную точку, указанную в конце командлета.
Например, vault.usgovcloudapi.net
следует использовать при работе с облаком Azure для государственных организаций с этим конечным результатом:
$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.usgovcloudapi.net' -Method GET -Headers @{Metadata="true"
Чтобы убедиться, что суффикс соответствует вашей среде, ознакомьтесь со статьей о безопасности Хранилища ключей Azure.
Результат должен выглядеть следующим образом:
Затем извлеките маркер доступа из ответа.
$KeyVaultToken = $Response.access_token
Наконец, используйте командлет PowerShell Invoke-WebRequest
для получения секрета, созданного ранее в Key Vault, передав маркер доступа в заголовке авторизации. Вам потребуется URL-адрес вашего хранилища ключей, который находится в разделе Основные компоненты на странице Обзор в этом хранилище.
Invoke-RestMethod -Uri https://<your-key-vault-URL>/secrets/<secret-name>?api-version=2016-10-01 -Method GET -Headers @{Authorization="Bearer $KeyVaultToken"}
Ответ должен выглядеть следующим образом:
value id attributes
----- -- ----------
'My Secret' https://mi-lab-vault.vault.azure.net/secrets/mi-test/50644e90b13249b584c44b9f712f2e51 @{enabled=True; created=16…
После получения секрета из хранилища Key Vault, его можно использовать для аутентификации в службе, требующей имя пользователя и пароль.
Очистка ресурсов
Наконец, когда вы хотите очистить ресурсы, войдите в портал Azure, выберите группы ресурсов, а затем найдите и выберите группу ресурсов, созданную в процессе этого руководства (напримерmi-test
). Затем используйте команду "Удалить группу ресурсов".
Кроме того, можно очистить ресурсы с помощью PowerShell или ИНТЕРФЕЙСА командной строки.
Использование управляемого удостоверения, назначаемого системой виртуальной машины Windows, для доступа к диспетчеру ресурсов
Совет
Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.
В этом руководстве объясняется, как создать назначаемое системой удостоверение, назначить его виртуальной машине Windows, а затем использовать это удостоверение для доступа к API Azure Resource Manager . Управляемые удостоверения службы автоматически управляются платформой Azure. Они позволяют выполнять проверку подлинности в службах, поддерживающих проверку подлинности Microsoft Entra, не требуя внедрения учетных данных в код.
Вы изучите следующие темы:
- Предоставьте виртуальной машине доступ к Azure Resource Manager.
- Получите маркер доступа с помощью назначаемого системой управляемого удостоверения виртуальной машины для доступа к Resource Manager.
Войдите в портал Azure с учетной записью администратора.
Перейдите на вкладку "Группы ресурсов".
Выберите группу ресурсов, которую требуется предоставить управляемому удостоверению виртуальной машины.
На левой панели выберите элемент управления доступом (IAM).
Нажмите + Добавить и выберите Добавить назначение ролей.
На вкладке "Роль" выберите "Читатель". Эта роль позволяет просматривать все ресурсы, но не позволяет вносить изменения.
На вкладке "Участники" для параметра "Назначить доступ к" выберите "Управляемое удостоверение", а затем нажмите кнопку "Выбрать участников".
Убедитесь, что в раскрывающемся списке подписки указана соответствующая подписка . Для группы ресурсов выберите все группы ресурсов.
В раскрывающемся списке "Управление удостоверениями " выберите виртуальную машину.
Для выбора выберите виртуальную машину в раскрывающемся списке, а затем нажмите кнопку "Сохранить".
Получение маркера доступа.
Используйте управляемое удостоверение, назначаемое системой, и вызовите Resource Manager, чтобы получить маркер доступа.
Для выполнения этих действий вам потребуется клиент SSH. Если вы используете Windows, можно использовать клиент SSH в подсистеме Windows для Linux. Если вам нужна помощь в настройке ключей SSH-клиента, ознакомьтесь с разделом Использование ключей SSH с Windows в Azure или Как создать и использовать пару из открытого и закрытого ключей SSH для виртуальных машин Linux в Azure.
- На портале перейдите к виртуальной машине Linux и в разделе "Обзор" выберите "Подключиться".
- Подключитесь к виртуальной машине с помощью выбранного клиента SSH.
- В окне
curl
терминала выполните запрос к локальным управляемым удостоверениям для конечной точки ресурсов Azure, чтобы получить маркер доступа для Azure Resource Manager. Запросcurl
маркера доступа приведен ниже.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true
Примечание.
Значение resource
параметра должно совпадать с ожидаемым идентификатором Microsoft Entra ID. В случае идентификатора ресурса Resource Manager необходимо включить конечную косую черту в URI.
Ответ включает маркер доступа, необходимый для доступа к Azure Resource Manager.
Ответ:
{
"access_token":"eyJ0eXAiOi...",
"refresh_token":"",
"expires_in":"3599",
"expires_on":"1504130527",
"not_before":"1504126627",
"resource":"https://management.azure.com",
"token_type":"Bearer"
}
Используйте этот маркер доступа для доступа к Azure Resource Manager; Например, чтобы прочитать сведения о группе ресурсов, к которой вы ранее предоставили доступ к этой виртуальной машине. Замените значения <SUBSCRIPTION-ID>
, <RESOURCE-GROUP>
и <ACCESS-TOKEN>
созданными ранее значениями.
Примечание.
URL-адрес учитывает регистр, поэтому убедитесь, что вы используете точный случай, используемый ранее при именовав группе ресурсов, и прописную букву G в resourceGroup.
curl https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS-TOKEN>"
Ответ обратно со сведениями о конкретной группе ресурсов:
{
"id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DevTest",
"name":"DevTest",
"location":"westus",
"properties":
{
"provisioningState":"Succeeded"
}
}
Получение доступа к Azure Resource Manager с помощью назначаемого пользователем управляемого удостоверения на виртуальной машине Windows
В этом руководстве объясняется, как создать назначаемое пользователем удостоверение, назначить его виртуальной машине Windows, а затем использовать это удостоверение для доступа к API Azure Resource Manager . Управляемые удостоверения службы автоматически управляются платформой Azure. Они позволяют выполнять проверку подлинности в службах, поддерживающих проверку подлинности Microsoft Entra, не требуя внедрения учетных данных в код.
Вы изучите следующие темы:
- Создание управляемого удостоверения, назначаемого пользователем
- Назначение пользовательского удостоверения виртуальной машине Windows.
- Предоставление назначаемому пользователем удостоверению доступа к группе ресурсов в Azure Resource Manager.
- Получение маркера доступа и вызов Azure Resource Manager с помощью назначаемого пользователем удостоверения
- Чтение свойств группы ресурсов.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Настройка Azure PowerShell в локальной среде
Чтобы запустить скрипты в этом примере, у вас есть два варианта:
- Используйте службу Azure Cloud Shell, которую можно открыть с помощью кнопки Попробовать в правом верхнем углу блоков кода.
- выполните скрипты локально с помощью Azure PowerShell, как описано в следующем разделе.
Чтобы использовать Azure PowerShell локально для этого руководства (а не с помощью Cloud Shell), выполните следующие действия.
Установите последнюю версию Azure PowerShell, если вы еще не сделали этого.
Войдите в Azure.
Connect-AzAccount
Установите PowerShellGet последней версии.
Install-Module -Name PowerShellGet -AllowPrerelease
Возможно, после выполнения этой команды для перехода к следующему шагу потребуется выйти (
Exit
) из текущего сеанса PowerShell.Установите выпущенную версию
Az.ManagedServiceIdentity
модуля. Это необходимо для выполнения операций управляемого удостоверения, назначаемых пользователем, в этом руководстве:Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
Включить
Для сценариев на основе удостоверения, назначаемого пользователем, необходимо выполнить следующие действия в этом разделе:
- Создайте удостоверение.
- Назначьте только что созданное удостоверение.
Создание удостоверения
В этом разделе показано, как создать назначаемое пользователем удостоверение, которое создается как автономный ресурс Azure. С помощью командлета New-AzUserAssignedIdentity Azure создает удостоверение в клиенте Microsoft Entra, которое можно назначить одному или нескольким экземплярам службы Azure.
Внимание
При создании управляемых удостоверений, назначаемых пользователем, имя должно начинаться с буквы или числа, а также может включать сочетание буквенно-цифровых символов, дефисов (-) и символов подчеркивания (_). Для корректной работы назначения для виртуальной машины или масштабируемого набора виртуальных машин имя должно содержать не более 24 символов. Дополнительные сведения см. в разделе Часто задаваемые вопросы и известные проблемы.
New-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1
Ответ содержит сведения о созданном удостоверении, назначаемом пользователем, как показано в следующем примере. Определите Id
и ClientId
значения для назначаемого пользователем удостоверения, так как они используются в последующих шагах:
{
Id: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1
ResourceGroupName : myResourceGroupVM
Name: ID1
Location: westus
TenantId: aaaabbbb-0000-cccc-1111-dddd2222eeee
PrincipalId: aaaaaaaa-bbbb-cccc-1111-222222222222
ClientId: 00001111-aaaa-2222-bbbb-3333cccc4444
ClientSecretUrl: https://control-westus.identity.azure.net/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1/credentials?tid=aaaabbbb-0000-cccc-1111-dddd2222eeee&oid=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb&aid=00001111-aaaa-2222-bbbb-3333cccc4444
Type: Microsoft.ManagedIdentity/userAssignedIdentities
}
Присвоить удостоверение
В этом разделе показано, как назначить удостоверение, назначаемое пользователем, виртуальной машине Windows. Клиенты могут использовать назначаемое пользователем удостоверение для целого ряда ресурсов Azure. Чтобы назначить пользовательское удостоверение отдельной виртуальной машине, используйте следующие команды. Используйте свойство Id
, возвращенное на предыдущем шаге, для параметра -IdentityID
.
$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Update-AzVM -ResourceGroupName TestRG -VM $vm -IdentityType "UserAssigned" -IdentityID "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
Предоставление доступа
В этом разделе показано, как предоставить пользователю доступ к группе ресурсов в Azure Resource Manager. Управляемые удостоверения для ресурсов Azure предоставляют удостоверения, которые код может использовать для запроса маркеров доступа для проверки подлинности в API ресурсов, поддерживающих проверку подлинности Microsoft Entra. В этом руководстве код получит доступ к API Azure Resource Manager.
Чтобы ваш код мог получить доступ к API, необходимо сначала предоставить удостоверению доступ к ресурсу в Azure Resource Manager. В этом случае вы обращаетесь к группе ресурсов, для которой содержится виртуальная машина. Измените значение <SUBSCRIPTIONID>
в соответствии с вашей средой.
$spID = (Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1).principalid
New-AzRoleAssignment -ObjectId $spID -RoleDefinitionName "Reader" -Scope "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/"
Ответ содержит подробные сведения о созданном назначении роли, подобные следующему примеру.
RoleAssignmentId: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000
Scope: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM
DisplayName: ID1
SignInName:
RoleDefinitionName: Reader
RoleDefinitionId: 00000000-0000-0000-0000-000000000000
ObjectId: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
ObjectType: ServicePrincipal
CanDelegate: False
Доступ к данным
Совет
Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.
Получение маркера доступа.
В оставшейся части руководства вы работаете с виртуальной машины, созданной ранее.
Войдите на портал Azure.
На портале перейдите к Виртуальные машины и перейдите на виртуальную машину Windows. В разделе "Обзор" выберите "Подключиться".
Введите имя пользователя и пароль, используемые при создании виртуальной машины Windows.
Теперь, когда вы создали подключение к удаленному рабочему столу с виртуальной машиной, откройте PowerShell в удаленном сеансе.
С помощью командлета PowerShell
Invoke-WebRequest
выполните запрос к локальным управляемым удостоверениям для конечной точки ресурсов Azure, чтобы получить маркер доступа для Azure Resource Manager. Значениеclient_id
возвращается при создании назначаемого пользователем управляемого удостоверения.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=00001111-aaaa-2222-bbbb-3333cccc4444&resource=https://management.azure.com/' -Method GET -Headers @{Metadata="true"} $content = $response.Content | ConvertFrom-Json $ArmToken = $content.access_token
Читать свойства
Наконец, используйте маркер доступа, полученный на предыдущем шаге, чтобы получить доступ к Azure Resource Manager, а затем прочитать свойства группы ресурсов, предоставленной пользователем. Замените <SUBSCRIPTION ID>
идентификатором подписки своей среды.
(Invoke-WebRequest -Uri https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroupVM?api-version=2016-06-01 -Method GET -ContentType "application/json" -Headers @{Authorization ="Bearer $ArmToken"}).content
Ответ содержит сведения об определенной группе ресурсов, подобные следующему примеру:
{"id":"/subscriptions/<SUBSCRIPTIONID>/resourceGroups/myResourceGroupVM","name":"myResourceGroupVM","location":"eastus","properties":{"provisioningState":"Succeeded"}}
Подробнее
- Что такое управляемые удостоверения для ресурсов Azure?
- Краткое руководство. Использование управляемого удостоверения, назначаемого пользователем, на виртуальной машине для доступа к Azure Resource Manager
- Создание, перечисление или удаление управляемого удостоверения, назначаемого пользователем, с помощью Azure PowerShell