Bật tính năng Mã hoá dữ liệu minh bạch (TDE) trên RPM AlloyDB Omni

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/fstab và 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ó

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

  1. 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.
  2. Đả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.

Biểu tượng để kích hoạt Cloud Shell

  1. 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 G rồi nhấn S trong bảng điều khiển hoặc bằng cách truy cập vào shell.cloud.google.com.
  2. 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.

Cửa sổ dòng lệnh Google Cloud Shell cho thấy môi trường được kết nối

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.

  1. 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"
    
  2. Định cấu hình dự án mặc định.
    gcloud config set project $PROJECT
    
  3. 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"
    
  4. 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.
    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
    
    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.
  5. 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
    
  6. 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.

  1. 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
    
  2. Đị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
    
  3. 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
    
  4. 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>"
    
  5. 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
    
  6. 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
    
  7. 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.

  1. 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
    
  2. 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
    
  3. 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
    
  4. Chỉ định quyền sở hữu /data1 và thư mục khoá KMS cho người dùng postgres.
    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").

  1. Đặ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
    
  2. Đị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
    
  3. Đặ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
    
  4. Đị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
    
  5. 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
    
  6. Bật và chạy dịch vụ alloydbomni18 systemd.
    sudo systemctl enable alloydbomni18
    sudo systemctl start alloydbomni18
    sudo systemctl status alloydbomni18
    
    Xác minh rằng đầu ra cho thấy Active: 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.

  1. Kết nối với cơ sở dữ liệu alloydbadmin bằng psql.
    PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin
    
  2. 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;
    
  3. 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.
    SELECT is_tde_enabled, tde_kek_url, tde_data_blocks_encrypted, tde_wal_blocks_encrypted
    FROM pgsnap.g$tde_stats;
    
    Đầu ra mẫu xác nhận TDE đang hoạt động (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)
    
  4. Thoát psql.
    \q
    
  5. 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, grep sẽ 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.

  1. Ngắt kết nối khỏi phiên SSH của máy ảo.
    exit
    
  2. 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
    
  3. 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.

10. Khảo sát

Bạn sẽ sử dụng hướng dẫn này như thế nào?

Chỉ đọc qua Đọc và hoàn thành bài tập