Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Yandex Compute Cloud
  • Yandex Container Solution
    • Все руководства
    • Настройка синхронизации часов с помощью NTP
    • Автомасштабирование группы ВМ для обработки сообщений из очереди
    • Обновление группы ВМ под нагрузкой
    • Развертывание Remote Desktop Gateway
    • Начало работы с Packer
    • Передача логов с ВМ в Yandex Cloud Logging
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Миграция в Yandex Cloud с помощью Хайстекс Акура
    • Защита от сбоев с помощью Хайстекс Акура
    • Резервное копирование ВМ с помощью Хайстекс Акура
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
    • Создание триггеров, которые вызывают функции для остановки ВМ и отправки уведомлений в Telegram
    • Создание веб-приложения на Python с использованием фреймворка Flask
    • Создание SAP-программы в Yandex Cloud
    • Развертывание сервера Minecraft в Yandex Cloud
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Создание тестовых виртуальных машин через GitLab CI
    • Высокопроизводительные вычисления (HPC) на прерываемых ВМ
    • Настройка SFTP-сервера на Centos 7
    • Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме
    • Развертывание параллельной файловой системы GlusterFS в высокопроизводительном режиме
    • Резервное копирование в Object Storage с помощью Bacula
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
    • Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
    • Настройка защищенного туннеля GRE поверх IPsec
    • Создание бастионного хоста
    • Реализация отказоустойчивых сценариев для сетевых виртуальных машин
    • Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
    • Создание внешней таблицы на базе таблицы из бакета Object Storage с помощью конфигурационного файла
    • Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
    • Работа со снапшотами в Managed Service for Kubernetes
        • Обзор
        • Консоль управления, CLI, API
        • Terraform
      • Развертывание Active Directory
      • Развертывание Microsoft Exchange
      • Развертывание Remote Desktop Services
      • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
      • Развертывание Remote Desktop Gateway
      • Создание сервера MLFlow для логирования экспериментов и артефактов
      • Развертывание GitLab Runner на виртуальной машине
    • Запуск языковой модели DeepSeek-R1 в кластере GPU
    • Запуск библиотеки vLLM с языковой моделью Gemma 3 на ВМ с GPU
    • Доставка USB-устройств на виртуальную машину или сервер BareMetal
    • Запуск Docker-образа на ВМ с помощью Cloud Registry
    • Развертывание воркера SourceCraft на ВМ
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте сервисный аккаунт
  • Создайте ключ KMS
  • Создайте секрет
  • Создайте ВМ
  • Авторизуйтесь в ОС Windows
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Продукты Microsoft в Yandex Cloud
  3. Безопасная передача пароля в скрипт инициализации
  4. Консоль управления, 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 ООО «Яндекс.Облако»