Сценарий для развертывания контроллера домена IdP KeyCloak и рабочей станции.
Сценарий написан для курса "Настройка безопасной среды в Yandex.Cloud".
Предполагаем, что приступая к выполнению заданий практикума у вас уже есть доступ в Yandex Cloud, вы знаете идентификатор своего облака (cloud-id) и идентификатор каталога (folder-id) в вашем облаке где в процессе выполнения заданий практикума будут создаваться облачные ресурсы.
Для развёртывания рабочего окружения установим инструмент Yandex Cloud CLI (yc)
на свой компьютер (подробная инструкция).
Для загрузки рецепта Terraform установите git по инструкции.
Установите инструмент Terraform
на свой компьютер (если он уже не установлен) по (инструкции).
Распакуйте архив и скопируйте файл terraform.exe в каталог C:\Windows\System32
Для корректной установки всех необходимых ресурсов Terraform создайте в домашнем каталоге (/home/<username>
- для MacOS и Linux, C:\Users\Administrator\AppData\Roaming
- для Windows) файл .terraformrc
(для Windows terraform.rc
) с содержимым:
provider_installation {
network_mirror {
url = "https://terraform-mirror.yandexcloud.net/"
include = ["registry.terraform.io/*/*"]
}
direct {
exclude = ["registry.terraform.io/*/*"]
}
}
- Откроем в новой вкладке браузера консоль облака и, слева внизу, выберем
Учетная запись
и выйдем из всех текущих аккаунтов облака. В результате на экране должна показаться страница с кнопкойВойти в аккаунт на Яндексе
. Закроем эту страницу. - Откроем в новой вкладке ссылку где будет предложено авторизоваться в Яндекс ID
- Введём имя и пароль пользователя для учётной записи Яндекс ID, после чего произойдёт перенаправление в консоль Yandex Cloud
- Перейдём по ссылке для получения OAuth Token. Значение token будет выглядеть примерно так
AQAAAAAABQ0pAATrwPdubkJPerC4mJyaRELWbUY
- Сохраним полученное значение Token в переменной окружения (для Windows – PowerShell, MacOS и Linux – bash)
$env:YC_TOKEN="<ваш OAuth Token>"
export YC_TOKEN=<ваш OAuth Token>
Создадим профиль в yc для работы с облаком
yc config profile create security
yc config set cloud-id <cloud-id>
yc config set folder-id <folder-id>
yc config set token $YC_TOKEN
yc config profile create security
yc config set cloud-id <cloud-id>
yc config set folder-id <folder-id>
yc config set token $env:YC_TOKEN
где вместо <cloud-id>
нужно указать идентификатор своего облака, а вместо <folder-id>
нужно указать идентификатор каталога в облаке. Идентификаторы можно получить из консоли облака через веб интерфейс.
git clone https://github.com/Sayanaro/YandexCloud-Security-Course-KeyCloack-AltVersion.git
cd YandexCloud-Security-Course-KeyCloack-AltVersion
Сценарий разворачивает контроллер домена Active Directory + ADFS, рабочую станцию ws и инстанс интернет-магазина OpenCart.
Имена виртуальных машин, домена, и пользователей задаются переменными в файле terraform.tfvars
. Остальные переменные заданы в файле variables.tf
в параметрах по умолчанию.
Для начала зададим переменные окружения:
- Запустите консоль PowerShell
- Выполните:
yc config profile activate security
$env:YC_TOKEN = "ваш OAuth токен"
$env:YC_CLOUD_ID=$(yc config get cloud-id)
$env:YC_FOLDER_ID=$(yc config get folder-id)
- Запустите консоль bash
- Выполните:
yc config profile activate security
export YC_TOKEN="ваш OAuth токен"
export YC_CLOUD_ID=$(yc config get cloud-id)
export YC_FOLDER_ID=$(yc config get folder-id)
Инициализируйте Terraform:
terraform init
terraform apply
Сценарий попросит ввести пароль администратора. Пароль должен быть не менее 8 символов, содержать строчные и заглавные буквы, минимум одну цифру 0-9 и минимум один спецсимвол (@#$%&*/:;"',.?+=-_).
Спустя 25 минут окружение будет настроено и готово к работе.
Дальнейшая работа будет проводиться на ВМ ws для демонстрации создания федерации.
Перед созданием ВМ терраформ генерирует криптопару для доступа к гостевой ОС по протоколу SSH. Закрытый ключ сохраняется в файле pt_key.pem
. Чтобы подключиться с использованием этого файла из ОС Windows необходимо изменить права доступа к нему.
После выполнения сценария Terraform выполните в PowerShell:
$Key = "pt_key.pem"
Icacls $Key /c /t /Inheritance:d
Icacls $Key /c /t /Remove:g Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
Icacls $Key /c /t /Grant ${env:UserName}:F
TakeOwn /F $Key
Icacls $Key /c /t /Grant:r ${env:UserName}:F
Icacls $Key
После этого можно подключаться к ВМ Linux по ssh:
ssh <username>@<pulic_ip> -i pt_key.pem
# keycloak:
ssh ubuntu@<keycloak_vm_public_ip> -i pt_key.pem
# ws:
ssh sles@<ws_vm_public_ip> -i pt_key.pem
Для полдключения к рабочему столу через VNC-клиент:
- подключитесь к ВМ ws по ssh:
ssh sles@<ws_vm_public_ip> -i pt_key.pem
- выполните:
vncserver -geometry 1200x800 -depth 32 -name remote-desktop :1
- Подключитесь к рабочему столу по порту 5901