Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
      • Обзор
      • Консоль управления, CLI, API
      • Terraform
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Развертывание Remote Desktop Gateway
    • Подключение бакета как диска в Windows

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте сервисный аккаунт
  • Создайте ключ KMS
  • Создайте секрет
  • Создайте ВМ
  • Авторизуйтесь в ОС Windows
  • Как удалить созданные ресурсы
  1. Продукты Microsoft в Yandex Cloud
  2. Безопасная передача пароля в скрипт инициализации
  3. Консоль управления, CLI, API

Безопасная передача пароля в скрипт инициализации с помощью консоли управления, CLI или API

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 12 мая 2026 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте сервисный аккаунт
  • Создайте ключ KMS
  • Создайте секрет
  • Создайте ВМ
  • Авторизуйтесь в ОС Windows
  • Как удалить созданные ресурсы

Чтобы создать ВМ и защитить конфиденциальную информацию в скрипте инициализации с помощью консоли управления, CLI или API:

  1. Подготовьте облако к работе.
  2. Создайте сервисный аккаунт.
  3. Создайте ключ KMS.
  4. Создайте секрет.
  5. Создайте ВМ.
  6. Авторизуйтесь в ОС Windows.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

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

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры входит:

  • плата за постоянно запущенные ВМ (см. тарифы Yandex Compute Cloud);
  • плата за использование образа (зависит от образа);
  • плата за использование ключа KMS (см. тарифы KMS);
  • плата за использование секрета (см. тарифы Yandex Lockbox).

Создайте сервисный аккаунтСоздайте сервисный аккаунт

Консоль управления
CLI
API
  1. В консоли управления выберите каталог, в котором хотите создать сервисный аккаунт.
  2. Перейдите в сервис Identity and Access Management.
  3. Нажмите кнопку Создать сервисный аккаунт.
  4. Введите имя сервисного аккаунта, например, win-secret-sa.
  5. Нажмите кнопку Создать.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

Выполните команду для создания сервисного аккаунта, указав имя win-secret-sa:

yc iam service-account create --name win-secret-sa

Где name — имя сервисного аккаунта.

Результат:

id: ajehr0to1g8b********
folder_id: b1gv87ssvu49********
created_at: "2024-03-15T09:03:11.665153755Z"
name: win-secret-sa

Чтобы создать сервисный аккаунт, воспользуйтесь вызовом gRPC API ServiceAccountService/Create или методом create для ресурса ServiceAccount REST API.

Создайте ключ KMSСоздайте ключ KMS

  1. Создайте ключ шифрования:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором будет создана ключевая пара.
    2. Перейдите в сервис Key Management Service.
    3. На панели слева выберите Симметричные ключи.
    4. Нажмите Создать ключ и задайте атрибуты ключа:
      • Имя — win-secret-key.
      • Алгоритм шифрования — AES-256.
      • Для остальных параметров оставьте значения по умолчанию.
    5. Нажмите Создать.

    Вместе с ключом создается его первая версия: кликните по ключу в списке, чтобы открыть страницу с его атрибутами.

    Выполните команду:

    yc kms symmetric-key create \
      --name win-secret-key \
      --default-algorithm aes-256
    

    Где:

    • --name — имя ключа.
    • --default-algorithm — алгоритм шифрования: aes-128, aes-192 или aes-256.

    Воспользуйтесь методом REST API create для ресурса SymmetricKey или вызовом gRPC API SymmetricKeyService/Create.

  2. Назначьте сервисному аккаунту win-secret-sa роль kms.keys.encrypterDecrypter:

    Консоль управления
    CLI
    API
    1. На странице ключа перейдите на вкладку Права доступа.
    2. На странице Права доступа к сервисному аккаунту найдите аккаунт win-secret-sa в списке и нажмите значок .
    3. Нажмите кнопку Изменить роли.
    4. В открывшемся диалоге нажмите кнопку Добавить роль и выберите роль kms.keys.encrypterDecrypter.

    Выполните команду:

    yc resource-manager folder add-access-binding <идентификатор_каталога> \
      --role kms.keys.encrypterDecrypter \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    

    Чтобы назначить сервисному аккаунту роль на каталог, воспользуйтесь методом REST API setAccessBindings для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/SetAccessBindings.

Создайте секретСоздайте секрет

Создайте секрет в сервисе Yandex Lockbox и сохраните в нем логины и пароли пользователей, для которых будут созданы учетные записи в ОС Windows.

Важно

При выборе пароля обязательно соблюдайте требования к безопасности пароля, иначе учетная запись для пользователя не будет создана.
Пароль должен:

  • быть не короче восьми символов;
  • не содержать в себе имени учетной записи;
  • содержать знаки минимум трех из четырех групп:
    • латинские заглавные буквы (A-Z);
    • латинские строчные буквы (a-z);
    • цифры (0-9);
    • неалфавитные символы (!, ?, %, $, # и т. д.).
Консоль управления
CLI
API
  1. Перейдите в сервис Lockbox.
  2. Нажмите кнопку Создать секрет.
  3. В поле Имя введите имя секрета: win-secret.
  4. В поле Ключ KMS укажите ключ win-secret-key.
  5. В блоке Версия:
    • В поле Ключ введите логин администратора Administrator.
    • В поле Значение введите пароль для администратора.
  6. При желании добавьте еще пользователей. Для этого нажмите кнопку Добавить ключ/значение и введите логин и пароль для следующего пользователя.
  7. Нажмите кнопку Создать.
  1. Выполните команду:

    yc lockbox secret create \
      --name win-secret \
      --kms-key-id <идентификатор_ключа> \
      --payload "[{'key': 'Administrator', 'text_value': '<пароль_администратора>'},{'key': 'user1', 'text_value': '<пароль_пользователя>'}]" \
      --cloud-id <идентификатор_облака> \
      --folder-id <идентификатор_каталога>
    

    Где:

    • --name — имя секрета. Обязательный параметр.
    • --kms-key-id — идентификатор ключа KMS.
    • --description — описание секрета. Необязательный параметр.
    • --payload — содержимое секрета в виде массива формата YAML или JSON.
    • --cloud-id — идентификатор облака, в котором будет создан секрет.
    • --folder-id — идентификатор каталога, в котором будет создан секрет.

Чтобы создать секрет, воспользуйтесь методом REST API create для ресурса Secret или вызовом gRPC API SecretService/Create.

  1. Назначьте сервисному аккаунту win-secret-sa роль lockbox.payloadViewer:

    Консоль управления
    CLI
    API
    1. На странице секрета перейдите на вкладку Права доступа.
    2. Перейдите на вкладку Права доступа.
    3. Найдите аккаунт win-secret-sa в списке и нажмите значок .
    4. Нажмите кнопку Изменить роли.
    5. В открывшемся диалоге нажмите кнопку Добавить роль и выберите роль lockbox.payloadViewer.

    Выполните команду:

    yc resource-manager folder add-access-binding <идентификатор_каталога> \
      --role lockbox.payloadViewer \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    

Создайте ВМСоздайте ВМ

Создайте ВМ с ОС Windows и учетными записями администратора и пользователей.

  1. Создайте файл init.ps1 и сохраните в него код:

    #ps1
    
    # logging
    Start-Transcript -Path "$ENV:SystemDrive\provision2.txt" -IncludeInvocationHeader -Force
    "Bootstrap script started" | Write-Host
    
    # SECRET'S ID:
    $SecretID = "<secret_id>"
    
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    $SecretURL = "https://payload.lockbox.api.cloud.yandex.net/lockbox/v1/secrets/$SecretID/payload"
    
    "Secret ID is $SecretID"
    "Payload URL is $SecretURL"
    
    $YCToken = (Invoke-RestMethod -Headers @{'Metadata-Flavor'='Google'} -Uri "http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token").access_token
    if (!$YCToken) {
        throw "Service Account doesn't connected to VM. Please, add Service account with roles lockbox.payloadViewer and kms.keys.encrypterDecrypter to VM and try again."
    }
    
    # Creating parameters for REST-invokations
    $Headers = @{
        Authorization="Bearer $YCToken"
    }
    
    $Params = @{
        Uri = $SecretURL
        Method = "GET"
        Headers = $Headers
    }
    
    # Getting secret via REST invoke
    $Secret = Invoke-RestMethod @Params
    $SecretAdministratorPlainTextPassword = $Secret.entries[0].textValue
    
    # inserting value's from terraform
    if (-not [string]::IsNullOrEmpty($SecretAdministratorPlainTextPassword)) {
        "Set local administrator password" | Write-Host
        $SecretAdministratorPassword = $SecretAdministratorPlainTextPassword | ConvertTo-SecureString -AsPlainText -Force
        # S-1-5-21domain-500 is a well-known SID for Administrator
        # https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/security-identifiers-in-windows
        $Administrator = Get-LocalUser | Where-Object -Property "SID" -like "S-1-5-21-*-500"
        $Administrator | Set-LocalUser -Password $SecretAdministratorPassword
    }
    
    # Creating new users if any
    if($Secret.entries.count -gt 1) {
        foreach($User in $Secret.entries[1..($Secret.entries.count-1)]){
            $SecretUserPassword = $User.textValue | ConvertTo-SecureString -AsPlainText -Force
            New-LocalUser -Name $User.key -Password $SecretUserPassword -FullName $User.key
            Add-LocalGroupMember -Group Users -Member $User.key
            Add-LocalGroupMember -Group "Remote Desktop Users" -Member $User.key
        }
    }
    
    "Bootstrap script ended" | Write-Host
    
  2. В файле init.ps1 замените <secret_id> на реальный идентификатор секрета, в котором вы сохранили учетные записи пользователей.

  3. Создайте ВМ:

    Консоль управления
    CLI
    1. В консоли управления откройте каталог, в котором будет создана ВМ.
    2. Справа сверху нажмите кнопку Создать ресурс и выберите Виртуальная машина.
    3. В блоке Образ загрузочного диска выберите образ с ОС Windows.
    4. В блоке Расположение выберите зону доступности, в которой будет находиться ВМ.
    5. В блоке Общая информация задайте имя ВМ, например, win-test.
    6. В блоке Дополнительно укажите данные для доступа на ВМ:
      • Выберите сервисный аккаунт win-secret-sa.
      • Разрешите доступ к серийной консоли.
    7. В блоке Метаданные:
      • В поле Ключ укажите user-data.
      • В поле Значение вставьте содержимое файла init.ps1.
    8. Нажмите кнопку Создать ВМ.

    Выполните команду:

    yc compute instance create \
      --name win-test \
      --hostname windows10 \
      --zone ru-central1-a \
      --create-boot-disk image-id=<идентификатор_образа> \
      --cores 2 \
      --core-fraction 100 \
      --memory 4 \
      --metadata-from-file user-data=init.ps1  \
      --network-interface subnet-name=<имя_подсети>,nat-ip-version=ipv4 \
      --service-account-name win-secret-sa \
      --platform standard-v3
    

    Где:

    • image_id — идентификатор образа с ОС Windows.
    • subnet_name — имя подсети, в которой вы хотите разместить ВМ.

    Примечание

    Команды yc compute instance create | create-with-container | update | add-metadata поддерживают подстановку в метаданные ВМ значений переменных окружения. Эти значения, заданные в ключе user-data в формате $<имя_переменной>, в момент выполнения команды Yandex Cloud CLI будут подставлены в метаданные ВМ из переменных окружения среды, в которой выполняется команда.

    Чтобы изменить такое поведение, не подставлять значение переменной из среды выполнения команды CLI и передать в метаданные ВМ имя переменной в формате $<имя_переменной>, используйте синтаксис с двумя символами доллара. Например: $$<имя_переменной>.

    Подробнее см. в разделе Особенности передачи переменных окружения в метаданных через CLI.

Авторизуйтесь в ОС WindowsАвторизуйтесь в ОС Windows

Чтобы проверить, что данные из секрета были успешно использованы для создания пользователей, авторизуйтесь в ОС виртуальной машины:

  1. В консоли управления выберите каталог, которому принадлежит виртуальная машина.

  2. Перейдите в сервис Compute Cloud.

  3. Выберите виртуальную машину win-test.

  4. Перейдите на вкладку Серийная консоль.

  5. В блоке Серийная консоль выберите COM2 и нажмите кнопку Подключиться. В командной строке отобразится приглашение ввода команд:

    Computer is booting, SAC started and initialized.                               
                                                                                    
    Use the "ch -?" command for information about using channels.                   
    Use the "?" command for general help.                                           
                                                                                    
                                                                                    
    SAC>                                                                            
    EVENT: The CMD command is now available.                                         
    
  6. Просмотрите список открытых каналов:

    SAC>ch
    Channel List
    
    (Use "ch -?" for information on using channels)
    
    # Status  Channel Name
    0 (AV)    SAC
    
  7. При необходимости создайте новый канал с экземпляром командной оболочки:

    SAC>cmd
    The Command Prompt session was successfully launched.
    SAC>
    EVENT:   A new channel has been created.  Use "ch -?" for channel help.
    Channel: Cmd0001
    
  8. Чтобы перейти на канал, нажмите сочетание клавиш ESC + TAB или выполните команду:

    SAC>ch -sn Cmd0001
    Name:                  Cmd0001
    Description:           Command
    Type:                  VT-UTF8
    Channel GUID:          e203fb79-d80d-11ea-87e3-c2679e14957d
    Application Type GUID: 63d02271-8aa4-11d5-bccf-00b0d014a2d0
    
    Press <esc><tab> for next channel.
    Press <esc><tab>0 to return to the SAC channel.
    Use any other key to view this channel.
    
  9. Нажмите Enter и последовательно введите:

    • Имя пользователя.
    • Домен, если вход выполняется под доменной учетной записью. Иначе введите имя хоста либо оставьте пустым.
    • Пароль.
    Please enter login credentials.
    Username: Administrator
    Domain  :
    Password: ***************
    
  10. Если авторизация прошла успешно, запустится экземпляр интерпретатора командной строки:

    C:\Windows\system32>
    

    Успешная авторизация означает, что данные из секрета были использованы при создании виртуальной машины.

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  • Удалите ВМ.
  • Удалите секрет.
  • Удалите ключ.

См. такжеСм. также

  • Безопасная передача пароля в скрипт инициализации с помощью Terraform

Была ли статья полезна?

Предыдущая
Обзор
Следующая
Terraform
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»