1. Giới thiệu
Lớp học lập trình này minh hoạ cách định cấu hình và bật tính năng Mã hoá dữ liệu minh bạch (TDE) trên AlloyDB Omni bằng cách sử dụng các gói RPM. TDE mã hoá các tệp dữ liệu, nhật ký ghi trước (WAL) và tệp dữ liệu tạm thời khi không hoạt động, giúp bảo vệ dữ liệu khỏi hoạt động truy cập trái phép vào phương tiện lưu trữ vật lý cơ bản.
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách cung cấp các ổ lưu trữ, khởi động và chạy một cụm AlloyDB Omni có bật TDE bằng File KMS, đồng thời xác minh quá trình mã hoá dữ liệu không hoạt động trên các tệp trên đĩa.
Điều kiện tiên quyết
- Quyền truy cập vào một Dự án Google Cloud và Cloud Shell từ Google Cloud Console.
- Google Cloud SDK (
gcloud) đã được cài đặt và định cấu hình. Để biết thông tin chi tiết về cách cài đặt gcloud, hãy tham khảo bài viết gcloud-install
Kiến thức bạn sẽ học được
- Cách tạo một VM Compute Engine có cơ sở dữ liệu, bản sao lưu và đĩa hoán đổi chuyên dụng.
- Cách định dạng ổ lưu trữ (XFS), định cấu hình
/etc/fstabvà chuẩn bị đường dẫn dữ liệu. - Cách tạo và quản lý Khoá mã hoá khoá (KEK) bằng File KMS.
- Cách cài đặt các gói RPM AlloyDB Omni và các tiện ích ứng dụng PostgreSQL.
- Cách khởi động một cụm AlloyDB Omni có bật TDE bằng các công cụ thiết lập RPM (
alloydbomni18-setup) và--tde-kek-url. - Cách xác minh hoạt động mã hoá trên ổ đĩa bằng cách kiểm tra tệp thô (
grep).
Bạn cần có
- Lấy đường liên kết URL đến các RPM của AlloyDB Omni bằng cách hoàn tất Biểu mẫu đăng ký RPM của AlloyDB Omni hoặc bằng cách tham khảo Tổng quan về AlloyDB Omni trên Linux. URL kho lưu trữ sẽ được gửi đến địa chỉ email mà bạn đã đăng ký.
- Một thiết bị đầu cuối đang hoạt động có quyền truy cập vào Google Cloud (nên dùng Cloud Shell).
2. Thiết lập và yêu cầu
Thiết lập dự án
Tạo một dự án trên Google Cloud
- Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud.
- Đảm bảo bạn đã bật tính năng thanh toán cho dự án trên Cloud. Tìm hiểu cách kiểm tra xem tính năng thanh toán có được bật trong một dự án hay không.
Khởi động Cloud Shell
Mặc dù có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên đám mây.

- Mở Cloud Console rồi nhấp vào biểu tượng Cloud Shell trên thanh công cụ ở trên cùng bên phải. Bạn cũng có thể mở Cloud Shell bằng cách nhấn
Grồi nhấnStrong bảng điều khiển hoặc bằng cách truy cập vào shell.cloud.google.com. - Quá trình này thường mất vài phút để thiết lập và kết nối với môi trường. Khi hoàn tất, bạn sẽ thấy một lời nhắc trên thiết bị đầu cuối đã sẵn sàng để nhập.

3. Tạo máy ảo Compute Engine
Trong phần này, bạn sẽ tạo một máy ảo (VM) Compute Engine (GCE) chạy Rocky Linux 9 với các ổ đĩa lưu trữ dài lâu chuyên dụng cho dữ liệu cơ sở dữ liệu (/data1), bản sao lưu/khả năng ghi nhận (/obs) và không gian hoán đổi.
- Xác định các biến môi trường cho mã dự án, tên VM, vùng và khu vực.
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-tde-vm" export ZONE="us-central1-c" export REGION="us-central1" - Định cấu hình dự án mặc định.
gcloud config set project $PROJECT - Tạo quy tắc tường lửa mạng cho lưu lượng truy cập 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" - Vì VM được tạo mà không có địa chỉ IP công khai, hãy định cấu hình Cloud Router và cổng Cloud NAT để cung cấp quyền truy cập vào Internet đi ra để tải các gói RPM xuống. Nếu đã có một Cloud NAT trong khu vực dự án của bạn, bạn có thể tiếp tục.
Lưu ý: Nếu đã có một cổng NAT trên đám mây trong khu vực của bạn, thì GCP sẽ trả về một thông báo cho biết NAT đã được định cấu hình cho tất cả các mạng con. Bạn có thể yên tâm bỏ qua lỗi này và tiếp tục.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 - Tạo thêm các ổ đĩa cố định cho dữ liệu cơ sở dữ liệu, bản sao lưu và không gian trao đổi.
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 - Cung cấp phiên bản máy ảo Rocky Linux 9 bằng các ổ đĩa lưu trữ được đính kèm.
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. Chuẩn bị ổ đĩa, điều chỉnh hệ thống và khoá KMS của tệp
Trong phần này, bạn sẽ kết nối với VM, định dạng và gắn các ổ đĩa lưu trữ liên tục, định cấu hình bộ nhớ ảo, điều chỉnh SELinux và tạo Khoá mã hoá khoá (KEK) TDE bằng File KMS.
- SSH vào máy ảo thông qua Identity-Aware Proxy (IAP).
gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - Định dạng và gắn ổ đĩa dữ liệu (
/data1) và ổ đĩa có thể quan sát/sao lưu (/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 - Tạo và bật không gian hoán đổi trên ổ đĩa hoán đổi chuyên dụng.
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 - Xác định các biến môi trường cho thư mục cơ sở dữ liệu và tệp khoá 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>" - Tạo thư mục lưu trữ cho cơ sở dữ liệu và bộ nhớ khoá KMS tệp.
sudo mkdir -p $PGDATA sudo mkdir -p $KMS_DIR - Tạo Khoá mã hoá khoá (KEK) có độ an toàn mã hoá 32 byte bằng OpenSSL cho File KMS.
sudo openssl rand -base64 32 | sudo tee $KEK_FILE sudo chmod 700 $KMS_DIR sudo chmod 600 $KEK_FILE - Cài đặt các tiện ích quản lý SELinux bắt buộc.
sudo dnf install -y policycoreutils-python-utils
5. Cài đặt gói RPM AlloyDB Omni
Định cấu hình kho lưu trữ gói và cài đặt máy chủ cơ sở dữ liệu AlloyDB Omni cùng với các công cụ PostgreSQL 18 tiêu chuẩn.
Lưu ý: Thay thế $ALLOYDB_OMNI_REPOSITORY_URL bằng URL kho lưu trữ nhận được qua email sau khi hoàn tất Biểu mẫu đăng ký RPM AlloyDB Omni. Để biết thêm thông tin, hãy xem bài viết Tổng quan về AlloyDB Omni trên Linux.
- Tạo tệp cấu hình kho lưu trữ YUM cho 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 - Cập nhật bộ nhớ đệm kho lưu trữ YUM và cài đặt các gói RPM của máy chủ AlloyDB Omni 18.
sudo yum makecache sudo dnf install -y alloydbomni18 - Cài đặt kho lưu trữ RPM PGDG chính thức của PostgreSQL và cài đặt gói ứng dụng PostgreSQL 18 tiêu chuẩn (
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 - Chỉ định quyền sở hữu
/data1và thư mục khoá KMS cho người dùngpostgres.sudo chown -R postgres:postgres /data1 $KMS_DIR sudo chmod 755 /data1 $PGDATA
6. Khởi động một Cụm được bật TDE
Định cấu hình hạn mức tài nguyên, mở các cổng tường lửa máy chủ lưu trữ và khởi động cụm AlloyDB Omni khi tính năng Mã hoá dữ liệu minh bạch được bật thông qua khoá KMS tệp (POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE").
- Đặt SELinux thành chế độ cho phép và định cấu hình các quy tắc tường lửa của máy chủ lưu trữ cho PostgreSQL.
sudo setenforce 0 sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload - Định cấu hình các thông số ghi đè dịch vụ systemd để chỉ định giới hạn tài nguyên bộ nhớ và CPU.
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 - Đặt các biến môi trường của quản trị viên và khởi chạy cụm cơ sở dữ liệu TDE bằng cách sử dụng
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 - Định cấu hình cổng máy chủ 5432 trong
postgresql.conf.sudo sed -i "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5432/" $PGDATA/postgresql.conf - Chuẩn bị danh mục và tiện ích hệ thống bằng
alloydbomni18-setup preparedb.sudo PGPORT=5432 PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - Bật và chạy dịch vụ
alloydbomni18systemd. Xác minh rằng đầu ra cho thấysudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running).
7. Xác minh hoạt động cơ sở dữ liệu và mã hoá ổ đĩa TDE
Kết nối với cơ sở dữ liệu TDE, chèn các bản ghi mẫu, thực thi CHECKPOINT để buộc ghi dữ liệu vào đĩa và chạy các lượt quét đĩa trực tiếp (grep) để chứng minh việc mã hoá dữ liệu khi không hoạt động.
- Kết nối với cơ sở dữ liệu
alloydbadminbằngpsql.PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin - Tạo một bảng kiểm thử, chèn một chuỗi bảo mật và kích hoạt một điểm kiểm tra để ghi các vùng đệm có sửa đổi vào bộ nhớ.
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; - Truy vấn chế độ xem số liệu thống kê TDE nội bộ của AlloyDB
pgsnap.g$tde_statsđể xác minh trạng thái mã hoá đang hoạt động, vị trí KEK và các chỉ số về khối. Đầu ra mẫu xác nhận TDE đang hoạt động (SELECT is_tde_enabled, tde_kek_url, tde_data_blocks_encrypted, tde_wal_blocks_encrypted FROM pgsnap.g$tde_stats;is_tde_enabled = t), đường dẫn tệp KEK và bộ đếm khối được mã hoá:is_tde_enabled | tde_kek_url | tde_data_blocks_encrypted | tde_wal_blocks_encrypted ----------------+---------------------------+---------------------------+-------------------------- t | file:///data1/kms/tde_key | 2023 | 2717 (1 row) - Thoát
psql.\q - Tìm kiếm các tệp lưu trữ cơ sở dữ liệu thô trong
/data1/18/base/để tìm chuỗi mật mã nhằm xác minh tính năng bảo vệ TDE trên đĩa.sudo grep -a -rn "UNENCRYPTED_DEMO_SECRET_98765" /data1/18/base/
Thông tin quan trọng về quy trình xác minh khoá:
- Trên một phiên bản cơ sở dữ liệu Không phải TDE, việc chạy
grepđối với các tệp mối quan hệ bảng sẽ hiển thị chuỗi văn bản thuần tuý trên ổ đĩa. - Trên một phiên bản cơ sở dữ liệu đã bật TDE,
grepsẽ trả về không có kết quả trùng khớp vì tất cả tệp dữ liệu, chỉ mục, nhật ký ghi trước (WAL) và dữ liệu tạm thời đều được mã hoá hoàn toàn bằng các thuật toán mã hoá khối AES khi lưu trữ.
8. Dọn dẹp
Sau khi hoàn thành các bài tập, hãy dọn dẹp tài nguyên để tránh bị tính phí điện toán không mong muốn.
- Ngắt kết nối khỏi phiên SSH của máy ảo.
exit - Xoá Máy ảo GCE và các ổ đĩa lưu trữ dài lâu được đính kèm.
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 - Xoá các quy tắc tường lửa và tài nguyên cổng 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. Xin chúc mừng
Xin chúc mừng! Bạn đã hoàn tất thành công lớp học lập trình về TDE trên AlloyDB Omni RPM.
Nội dung đã đề cập
- Cách cung cấp đĩa lưu trữ (
/data1,/obs), thiết lập không gian trao đổi và định dạng hệ thống tệp XFS. - Cách tạo và quản lý Khoá mã hoá khoá bằng File KMS.
- Cách khởi chạy và bắt đầu một cụm AlloyDB Omni có hỗ trợ TDE bằng các công cụ RPM.
- Cách xác minh quá trình mã hoá dữ liệu khi không hoạt động bằng cách kiểm tra trực tiếp đĩa thô (
grep).
Để biết thêm thông tin, hãy tham khảo Tài liệu về AlloyDB Omni.