1. Введение
В этом практическом занятии показано, как настроить и включить прозрачное шифрование данных (TDE) в AlloyDB Omni с помощью RPM-пакетов. TDE шифрует файлы данных, журналы предварительной записи (WAL) и временные файлы данных в состоянии покоя, обеспечивая защиту данных от несанкционированного доступа к базовым физическим носителям информации.
В этом практическом занятии вы узнаете, как выделять тома хранения, инициализировать и запускать кластер AlloyDB Omni с поддержкой TDE с использованием File KMS , а также проверять шифрование данных в состоянии покоя на дисковых файлах.
Предварительные требования
- Доступ к проекту Google Cloud и оболочке Cloud Shell из консоли Google Cloud.
- Google Cloud SDK (
gcloud) установлен и настроен. Подробную информацию об установке gcloud см. в инструкции по установке gcloud.
Что вы узнаете
- Как создать виртуальную машину Compute Engine с выделенными дисками для базы данных, резервного копирования и подкачки.
- Как отформатировать тома хранения (XFS), настроить файл
/etc/fstabи подготовить пути к данным. - Как генерировать и управлять ключами шифрования (KEK) с помощью File KMS.
- Как установить RPM-пакеты AlloyDB Omni и клиентские утилиты PostgreSQL.
- Как инициализировать кластер AlloyDB Omni с поддержкой TDE, используя инструменты настройки RPM (
alloydbomni18-setup) и--tde-kek-url. - Как проверить шифрование на диске с помощью анализа необработанных файлов (
grep).
Что вам понадобится
- Чтобы получить ссылку на RPM-пакеты AlloyDB Omni, заполните регистрационную форму AlloyDB Omni RPM или ознакомьтесь с обзором AlloyDB Omni для Linux . Ссылка на репозиторий будет отправлена на ваш зарегистрированный адрес электронной почты.
- Рабочий терминал с доступом к Google Cloud (рекомендуется Cloud Shell).
2. Setup and Requirements
Настройка проекта
Создайте проект в Google Cloud.
- В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud .
- Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .
Запустить Cloud Shell
Хотя вы можете управлять Google Cloud удаленно со своего ноутбука, в этом практическом занятии вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.

- Откройте консоль Google Cloud и щелкните значок Cloud Shell на панели инструментов в правом верхнем углу. Вы также можете открыть Cloud Shell, нажав клавишу
G, а затемSв консоли, или перейдя по адресу shell.cloud.google.com . - Обычно подготовка и подключение к среде занимают несколько минут. После завершения вы увидите приглашение терминала, готовое для ввода данных.

3. Создайте виртуальную машину Compute Engine.
В этом разделе вы создадите виртуальную машину Compute Engine (GCE) под управлением Rocky Linux 9 с выделенными постоянными дисками для данных базы данных ( /data1 ), резервного копирования/мониторинга ( /obs ) и пространства подкачки.
- Определите переменные среды для идентификатора вашего проекта, имени виртуальной машины, зоны и региона.
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-tde-vm" export ZONE="us-central1-c" export REGION="us-central1" - Настройте свой проект по умолчанию.
gcloud config set project $PROJECT - Создайте правила сетевого брандмауэра для SSH-трафика.
gcloud compute firewall-rules create allow-ssh-alloydb-omni-tde \ --project=$PROJECT \ --direction=INGRESS \ --action=allow \ --rules=tcp:22 \ --source-ranges="0.0.0.0/0" - Поскольку виртуальная машина создается без публичного IP-адреса, настройте облачный маршрутизатор и шлюз Cloud NAT для обеспечения исходящего доступа в Интернет для загрузки пакетов RPM. Если в регионе вашего проекта уже существует Cloud NAT, вы можете продолжить.
Примечание: Если в вашем регионе уже существует шлюз Cloud NAT, GCP вернет сообщение о том, что NAT уже настроен для всех подсетей. Вы можете смело игнорировать эту ошибку и продолжить.gcloud compute routers create alloydb-omni-tde-router \ --project=$PROJECT \ --network=default \ --region=$REGION 2>/dev/null || true gcloud compute routers nats create alloydb-omni-tde-nat \ --project=$PROJECT \ --router=alloydb-omni-tde-router \ --region=$REGION \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips 2>/dev/null || true - Создайте дополнительные постоянные диски для хранения данных базы данных, резервных копий и пространства подкачки.
gcloud compute disks create $INSTANCE_NAME-data \ --project=$PROJECT --zone=$ZONE --size=50GB --type=pd-balanced gcloud compute disks create $INSTANCE_NAME-obs \ --project=$PROJECT --zone=$ZONE --size=50GB --type=pd-balanced gcloud compute disks create $INSTANCE_NAME-swap \ --project=$PROJECT --zone=$ZONE --size=10GB --type=pd-balanced - Подготовьте экземпляр виртуальной машины Rocky Linux 9 с подключенными томами хранения.
gcloud compute instances create $INSTANCE_NAME \ --project=$PROJECT \ --zone=$ZONE \ --machine-type=n2-highmem-16 \ --image-family=rocky-linux-9 \ --image-project=rocky-linux-cloud \ --boot-disk-size=30GB \ --boot-disk-type=pd-balanced \ --disk=name=$INSTANCE_NAME-data,device-name=db-data,mode=rw \ --disk=name=$INSTANCE_NAME-obs,device-name=obs,mode=rw \ --disk=name=$INSTANCE_NAME-swap,device-name=swap,mode=rw \ --no-address
4. Подготовка дисков, настройка системы и файла ключа KMS.
В этом разделе вы подключаетесь к виртуальной машине, форматируете и монтируете тома постоянного хранения, настраиваете файл подкачки, оптимизируете SELinux и генерируете ключ шифрования TDE (KEK) с помощью File KMS.
- Подключение к виртуальной машине по SSH через Identity-Aware Proxy (IAP).
gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - Отформатируйте и смонтируйте том данных (
/data1) и том мониторинга/резервного копирования (/obs).sudo mkdir -p /data1 /obs sudo parted /dev/disk/by-id/google-db-data mklabel gpt sudo parted /dev/disk/by-id/google-db-data mkpart primary 0% 100% sudo parted /dev/disk/by-id/google-obs mklabel gpt sudo parted /dev/disk/by-id/google-obs mkpart primary 0% 100% sleep 3 sudo mkfs.xfs -L data /dev/disk/by-id/google-db-data-part1 sudo mkfs.xfs -L obs /dev/disk/by-id/google-obs-part1 echo -e "LABEL=data\t/data1\txfs\tdefaults\t0 0" | sudo tee -a /etc/fstab echo -e "LABEL=obs\t/obs\txfs\tdefaults\t0 0" | sudo tee -a /etc/fstab sudo systemctl daemon-reload sudo mount /data1 sudo mount /obs - Создайте и включите пространство подкачки на выделенном диске подкачки.
SWAP_UUID=$(sudo mkswap /dev/disk/by-id/google-swap 2>/dev/null | awk '$0 ~ "UUID" {print $NF}') echo -e "${SWAP_UUID}\tswap\tswap\tdefaults\t0 0" | sudo tee -a /etc/fstab sudo swapon -a - Определите переменные среды для каталога базы данных и файла ключа KMS.
export PGDATA="/data1/18" export KMS_DIR="/data1/kms" export KEK_FILE="$KMS_DIR/tde_key" export ALLOYDB_OMNI_REPOSITORY_URL="<your-repository-url>" - Создайте каталоги хранения для базы данных и хранилища ключей KMS для файлов.
sudo mkdir -p $PGDATA sudo mkdir -p $KMS_DIR - Сгенерируйте 32-байтовый криптографически защищенный ключ шифрования (KEK) с помощью OpenSSL для файлового KMS.
sudo openssl rand -base64 32 | sudo tee $KEK_FILE sudo chmod 700 $KMS_DIR sudo chmod 600 $KEK_FILE - Установите необходимые утилиты управления SELinux.
sudo dnf install -y policycoreutils-python-utils
5. Установите RPM-пакеты AlloyDB Omni.
Настройте репозитории пакетов и установите сервер базы данных AlloyDB Omni вместе со стандартными инструментами PostgreSQL 18.
Примечание: Замените $ALLOYDB_OMNI_REPOSITORY_URL на URL-адрес репозитория, полученный по электронной почте после заполнения формы регистрации RPM-пакета AlloyDB Omni . Для получения дополнительной информации см. Обзор AlloyDB Omni для Linux .
- Create the YUM repository configuration file for AlloyDB Omni.
sudo tee /etc/yum.repos.d/alloydbomni.repo << EOF [alloydbomni] name=alloydbomni baseurl=$ALLOYDB_OMNI_REPOSITORY_URL enabled=1 repo_gpgcheck=0 gpgcheck=1 gpgkey=https://dl.google.com/linux/linux_signing_key.pub EOF - Обновите кэш репозитория YUM и установите RPM-пакеты сервера AlloyDB Omni 18.
sudo yum makecache sudo dnf install -y alloydbomni18 - Установите официальный репозиторий PostgreSQL PGDG RPM и стандартный клиентский пакет PostgreSQL 18 (
psql).sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo dnf install -y postgresql18 - Назначьте пользователю
postgresправа собственности на каталог/data1и каталог ключей KMS.sudo chown -R postgres:postgres /data1 $KMS_DIR sudo chmod 755 /data1 $PGDATA
6. Инициализация кластера с поддержкой TDE.
Настройте квоты ресурсов, откройте порты брандмауэра хоста и инициализируйте кластер AlloyDB Omni с включенным прозрачным шифрованием данных с помощью ключа KMS для файлов ( POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE" ).
- Переведите SELinux в разрешающий режим и настройте правила брандмауэра хоста для PostgreSQL.
sudo setenforce 0 sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload - Настройте параметры переопределения службы systemd для назначения ограничений на использование памяти и ресурсов ЦП.
sudo mkdir -p /etc/systemd/system/alloydbomni18.service.d sudo tee /etc/systemd/system/alloydbomni18.service.d/override.conf << EOF [Service] CPUQuota=90% MemoryMax=80% EOF sudo chown root:root /etc/systemd/system/alloydbomni18.service.d/override.conf sudo chmod 644 /etc/systemd/system/alloydbomni18.service.d/override.conf sudo systemctl daemon-reload - Установите переменные среды администратора и инициализируйте кластер баз данных TDE с помощью
alloydbomni18-setup initdb.export PGPASSWORD="YourStrongPassword123!" export POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE" sudo POSTGRES_INITDB_ARGS="$POSTGRES_INITDB_ARGS" PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb - Настройте серверный порт 5432 в
postgresql.conf.sudo sed -i "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5432/" $PGDATA/postgresql.conf - Подготовьте системные каталоги и расширения с помощью
alloydbomni18-setup preparedb.sudo PGPORT=5432 PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - Включите и запустите службу systemd
alloydbomni18. Убедитесь, что в выводе отображаетсяsudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running).
7. Операции с базой данных и проверка шифрования диска TDE.
Подключитесь к базе данных TDE, вставьте тестовые записи, выполните CHECKPOINT , чтобы принудительно записать данные на диск, и запустите прямое сканирование диска ( grep ), чтобы доказать шифрование данных в состоянии покоя.
- Подключитесь к базе данных
alloydbadminс помощьюpsql.PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin - Создайте тестовую таблицу, вставьте конфиденциальную строку и запустите контрольную точку для записи измененных буферов в хранилище.
CREATE TABLE customer_credentials ( id SERIAL PRIMARY KEY, username TEXT, secret_passcode TEXT ); INSERT INTO customer_credentials (username, secret_passcode) VALUES ('alice_user', 'UNENCRYPTED_DEMO_SECRET_98765'); CHECKPOINT; - Для проверки статуса активного шифрования, местоположения KEK и метрик блоков выполните запрос к внутреннему представлению статистики TDE AlloyDB
pgsnap.g$tde_stats. Пример выходных данных, подтверждающих активацию TDE (SELECT is_tde_enabled, tde_kek_url, tde_data_blocks_encrypted, tde_wal_blocks_encrypted FROM pgsnap.g$tde_stats;is_tde_enabled = t), путь к файлу KEK и счетчики зашифрованных блоков:is_tde_enabled | tde_kek_url | tde_data_blocks_encrypted | tde_wal_blocks_encrypted ----------------+---------------------------+---------------------------+-------------------------- t | file:///data1/kms/tde_key | 2023 | 2717 (1 row) - Завершить работу
psql.\q - Найдите строку пароля в необработанных файлах хранилища базы данных в каталоге
/data1/18/base/, чтобы проверить защиту TDE на диске.sudo grep -a -rn "UNENCRYPTED_DEMO_SECRET_98765" /data1/18/base/
Главный вывод по проверке ключа:
- В экземпляре базы данных без TDE запуск
grepпо файлам связей таблиц отображает строку в виде обычного текста, находящуюся на диске. - On a TDE-Enabled database instance,
grepreturns zero matches because all data files, indexes, write-ahead logs (WAL), and temporary data are fully encrypted with AES block ciphers at rest.
8. Уборка
После завершения упражнений освободите ресурсы, чтобы предотвратить нежелательные расходы на вычислительные мощности.
- Отключитесь от SSH-сессии виртуальной машины.
exit - Удалите виртуальную машину GCE и подключенные постоянные диски.
gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet gcloud compute disks delete $INSTANCE_NAME-data $INSTANCE_NAME-obs $INSTANCE_NAME-swap --zone=$ZONE --project=$PROJECT --quiet - Удалите правила брандмауэра и ресурсы шлюза Cloud NAT.
gcloud compute firewall-rules delete allow-ssh-alloydb-omni-tde --project=$PROJECT --quiet gcloud compute routers nats delete alloydb-omni-tde-nat --router=alloydb-omni-tde-router --region=$REGION --project=$PROJECT --quiet gcloud compute routers delete alloydb-omni-tde-router --region=$REGION --project=$PROJECT --quiet
9. Поздравляем!
Поздравляем! Вы успешно завершили практическое занятие по AlloyDB Omni RPM в рамках программы TDE.
Что мы рассмотрели
- Как выделить дисковое пространство для хранения (
/data1,/obs), настроить файл подкачки и отформатировать файловую систему XFS. - How to generate and manage Key Encryption Keys using File KMS .
- Как инициализировать и запустить кластер AlloyDB Omni с поддержкой TDE с помощью инструментов RPM.
- Как проверить шифрование данных в состоянии покоя с помощью прямого анализа необработанных данных на диске (
grep).
Для получения дополнительной информации обратитесь к документации AlloyDB Omni .