Bật tính năng mã hóa khóa bí mật

Tài liệu này giải thích cách bật tính năng mã hoá thông tin mật của người tiêu dùng ứng dụng dành cho nhà phát triển (thông tin xác thực ứng dụng) được lưu trữ trong cơ sở dữ liệu Cassandra.

Tổng quan

Thông thường, Apigee Edge dành cho đám mây riêng tư cung cấp lớp mã hoá tuỳ chọn cho dữ liệu bản đồ giá trị khoá (KVM) và mã truy cập OAuth.

Bảng sau đây mô tả các phương thức mã hoá cho dữ liệu tĩnh trong Apigee dành cho đám mây riêng tư:

Thực thể Tính năng mã hoá được bật theo mặc định Có thể tuỳ chọn mã hoá Tài liệu liên quan
KVM Không Hãy xem bài viết Giới thiệu về KVM được mã hoá.
Mã truy cập OAuth Không Hãy xem phần Băm mã thông báo để tăng cường bảo mật.
Thông tin mật của người tiêu dùng về ứng dụng dành cho nhà phát triển Không Để bật tính năng này, hãy thực hiện các bước định cấu hình trong tài liệu này.

Để bật tính năng mã hoá thông tin đăng nhập của ứng dụng, bạn cần thực hiện các thao tác sau trên tất cả các nút máy chủ quản lý và trình xử lý thông báo:

  • Tạo một kho khoá để lưu trữ Khoá mã hoá khoá (KEK). Apigee sử dụng khoá đã mã hoá này để mã hoá các khoá bí mật cần thiết để mã hoá dữ liệu của bạn.
  • Chỉnh sửa các thuộc tính cấu hình trên tất cả các nút máy chủ quản lý và nút xử lý thông báo.
  • Tạo ứng dụng của nhà phát triển để kích hoạt quy trình tạo khoá.
  • Khởi động lại các nút.

Những việc cần làm này được giải thích trong tài liệu này.

Những điều bạn cần biết về tính năng mã hoá khoá

Các bước trong tài liệu này giải thích cách bật tính năng KEK. Tính năng này cho phép Apigee mã hoá các khoá bí mật dùng để mã hoá bí mật của người tiêu dùng trong ứng dụng của nhà phát triển khi các khoá này được lưu trữ tĩnh trong cơ sở dữ liệu Cassandra.

Theo mặc định, mọi giá trị hiện có trong cơ sở dữ liệu sẽ không thay đổi (ở dạng văn bản thuần tuý) và sẽ tiếp tục hoạt động như trước đây.

Nếu bạn thực hiện thao tác ghi trên một thực thể chưa mã hoá, thì thao tác đó sẽ được mã hoá khi lưu thao tác đó. Ví dụ: nếu bạn thu hồi một mã thông báo chưa mã hoá rồi sau đó phê duyệt mã đó, thì mã thông báo mới được phê duyệt sẽ được mã hoá.

Giữ an toàn cho khoá

Hãy nhớ lưu trữ một bản sao của kho khoá có lưu trữ KEK ở một vị trí an toàn. Bạn nên sử dụng cơ chế bảo mật của riêng mình để lưu bản sao của kho khoá. Như hướng dẫn trong tài liệu này giải thích, một kho khoá phải được đặt trên mỗi nút trình xử lý thông báo và nút máy chủ quản lý nơi tệp cấu hình cục bộ có thể tham chiếu đến kho khoá đó. Tuy nhiên, một điều quan trọng khác cũng cần lưu trữ là một bản sao của kho khoá ở một nơi khác để lưu giữ an toàn và dự phòng.

Bật tính năng mã hoá bằng khoá

Hãy làm theo các bước sau để mã hoá khoá bí mật của người tiêu dùng:

Điều kiện tiên quyết

Bạn phải đáp ứng những yêu cầu sau đây trước khi thực hiện các bước trong tài liệu này:

  • Bạn phải cài đặt hoặc nâng cấp lên Apigee Edge for Private Cloud 4.50.00.10 trở lên.
  • Bạn phải là quản trị viên của Apigee Edge dành cho đám mây riêng tư.

Bước 1: Tạo kho khoá

Hãy làm theo các bước sau để tạo kho khoá nhằm lưu giữ khoá mã hoá khoá (KEK):

  1. Thực thi lệnh sau đây để tạo một kho khoá nhằm lưu trữ khoá sẽ dùng để mã hoá KEK. Nhập lệnh chính xác như được hiển thị. (Bạn có thể cung cấp tên kho khoá bất kỳ mà mình muốn):
    keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \
    -keystore kekstore.p12 -storetype PKCS12

    Khi được nhắc, hãy nhập mật khẩu. Bạn sẽ sử dụng mật khẩu này trong các phần sau khi định cấu hình máy chủ quản lý và trình xử lý thư.

    Lệnh này tạo một tệp kho khoá kekstore.p12 chứa một khoá có bí danh KEYSTORE_NAME.

  2. (Không bắt buộc) Xác minh tệp được tạo đúng cách bằng lệnh sau đây. Nếu tệp đã đúng, lệnh này sẽ trả về một khoá có bí danh KEYSTORE_NAME:
    keytool -list -keystore kekstore.p12

Bước 2: Định cấu hình máy chủ quản lý

Tiếp theo, hãy định cấu hình máy chủ quản lý. Nếu đã cài đặt máy chủ quản lý trên nhiều nút, bạn phải lặp lại các bước này trên từng nút.

  1. Sao chép tệp kho khoá mà bạn đã tạo ở Bước 1 vào một thư mục trên nút máy chủ quản lý, chẳng hạn như /opt/apigee/customer/application. Ví dụ:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. Đảm bảo người dùng apigee có thể đọc được tệp này:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
    chmod 400 /opt/apigee/customer/application/kekstore.p12
  3. Thêm các thuộc tính sau vào /opt/apigee/customer/application/management-server.properties. Hãy tạo tệp nếu chưa có. Xem thêm Tài liệu tham khảo về tệp tài sản.
    conf_keymanagement_kmscred.encryption.enabled=true
    
    # Fallback is true to ensure your existing plaintext credentials continue to work
    conf_keymanagement_kmscred.encryption.allowFallback=true
    
    conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE
    conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME
    
    # These could alternately be set as environment variables. These variables should be
    # accessible to Apigee user during bootup of the Java process. If environment
    # variables are specified, you can skip the password configs below.
    # KMSCRED_ENCRYPTION_KEYSTORE_PASS=
    # KMSCRED_ENCRYPTION_KEK_PASS=
    See also Using environment variables for configuration properties.
    
    conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD
    conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD

    Lưu ý rằng KEK_PASSWORD có thể giống với KEYSTORE_PASSWORD tuỳ thuộc vào công cụ dùng để tạo kho khoá.

  4. Khởi động lại máy chủ quản lý bằng cách sử dụng các lệnh sau:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server wait_for_ready

    Lệnh wait_for_ready trả về thông báo sau đây khi máy chủ quản lý đã sẵn sàng:

    Checking if management-server is up: management-server is up.
    
  5. Nếu bạn đã cài đặt máy chủ quản lý trên nhiều nút, hãy lặp lại các bước từ 1 đến 4 ở trên cho từng nút máy chủ quản lý.

Bước 3: Tạo ứng dụng của nhà phát triển

Giờ đây, các máy chủ quản lý đã được cập nhật, bạn phải tạo một ứng dụng dành cho nhà phát triển để kích hoạt việc tạo khoá dùng để mã hoá dữ liệu thông tin xác thực ứng dụng:

  1. Tạo một Ứng dụng dành cho nhà phát triển để kích hoạt tính năng tạo khoá mã hoá dữ liệu (KEK). Để biết các bước, hãy xem phần Đăng ký ứng dụng.
  2. Xoá ứng dụng của nhà phát triển nếu muốn. Bạn không cần phải giữ lại khoá mã hoá sau khi tạo.

Bước 4: Định cấu hình trình xử lý thông báo

Cho đến khi tính năng mã hoá được bật trong trình xử lý thư, các yêu cầu thời gian chạy sẽ không thể xử lý bất kỳ thông tin xác thực đã mã hoá nào.

  1. Sao chép tệp kho khoá bạn đã tạo ở Bước 1 vào một thư mục trên nút trình xử lý thông báo, chẳng hạn như /opt/apigee/customer/application. Ví dụ:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. Đảm bảo người dùng apigee có thể đọc được tệp này:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
  3. Thêm các thuộc tính sau vào /opt/apigee/customer/application/message-processor.properties. Hãy tạo tệp nếu chưa có. Xem thêm Tài liệu tham khảo về tệp tài sản.
    conf_keymanagement_kmscred.encryption.enabled=true
    
    # Fallback is true to ensure your existing plaintext credentials continue to work
    conf_keymanagement_kmscred.encryption.allowFallback=true
    
    conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE
    conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME
    
    # These could alternately be set as environment variables. These variables should be
    # accessible to Apigee user during bootup of the Java process. If environment
    # variables are specified, you can skip the password configs below.
    # KMSCRED_ENCRYPTION_KEYSTORE_PASS=
    # KMSCRED_ENCRYPTION_KEK_PASS=
    See also Using environment variables for configuration properties.
    
    
    conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD
    conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD

    Lưu ý rằng KEK_PASSWORD có thể giống với KEYSTORE_PASSWORD tuỳ thuộc vào công cụ dùng để tạo kho khoá.

  4. Khởi động lại trình xử lý tin nhắn bằng các lệnh sau:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready

    Lệnh wait_for_ready trả về thông báo sau đây khi trình xử lý thông báo đã sẵn sàng xử lý thông báo:

    Checking if message-processor is up: message-processor is up.
  5. Nếu bạn đã cài đặt trình xử lý thông báo trên nhiều nút, hãy lặp lại các bước từ 1 đến 4 trên từng nút trình xử lý thông báo.

Tóm tắt

Mọi ứng dụng nhà phát triển mà bạn tạo từ giờ trở đi sẽ được mã hoá bí mật thông tin đăng nhập khi lưu trữ trong cơ sở dữ liệu Cassandra.

Sử dụng các biến môi trường cho các thuộc tính cấu hình

Ngoài ra, bạn có thể đặt các thuộc tính cấu hình máy chủ quản lý và trình xử lý thông báo sau đây bằng cách sử dụng các biến môi trường. Nếu bạn đặt chính sách này, các biến môi trường sẽ ghi đè các thuộc tính được đặt trong tệp cấu hình máy chủ quản lý hoặc trình xử lý thông báo.

conf_keymanagement_kmscred.encryption.keystore.pass=
conf_keymanagement_kmscred.encryption.kek.pass=

Các biến môi trường tương ứng là:

export KMSCRED_ENCRYPTION_KEYSTORE_PASS=KEYSTORE_PASSWORD
export KMSCRED_ENCRYPTION_KEK_PASS=KEK_PASSWORD

Nếu thiết lập các biến môi trường này, bạn có thể bỏ qua các thuộc tính cấu hình này khỏi tệp cấu hình trên nút trình xử lý thông báo và nút máy chủ quản lý, vì các thuộc tính này sẽ bị bỏ qua:

conf_keymanagement_kmscred.encryption.keystore.pass
conf_keymanagement_kmscred.encryption.kek.pass

Nội dung tham chiếu đến tệp thuộc tính

Phần này mô tả các thuộc tính cấu hình mà bạn phải thiết lập trên tất cả các nút máy chủ quản lý và trình xử lý thông báo, như đã giải thích trước đó trong tài liệu này.

Tài sản Mặc định Nội dung mô tả
conf_keymanagement_kmscred.encryption.enabled false Phải là true thì mới bật được tính năng mã hoá khoá.
conf_keymanagement_kmscred.encryption.allowFallback false Thiết lập tuỳ chọn cho phép Dự phòng sang true để đảm bảo thông tin xác thực văn bản thuần tuý hiện có của bạn tiếp tục hoạt động.
conf_keymanagement_kmscred.encryption.keystore.path Không áp dụng Cung cấp đường dẫn đến kho khoá KEK trên nút trình xử lý thông báo hoặc nút máy chủ quản lý. Xem Bước 2: Định cấu hình máy chủ quản lýBước 3: Định cấu hình trình xử lý thông báo.
conf_keymanagement_kmscred.encryption.kek.alias Không áp dụng Bí danh mà KEK được lưu trữ trong kho khoá.
conf_keymanagement_kmscred.encryption.keystore.pass Không áp dụng Không bắt buộc nếu bạn sử dụng các biến môi trường để đặt các thuộc tính này. Hãy xem thêm bài viết Sử dụng biến môi trường cho các thuộc tính cấu hình.
conf_keymanagement_kmscred.encryption.kek.pass Không áp dụng Không bắt buộc nếu bạn sử dụng các biến môi trường để đặt các thuộc tính này. Hãy xem thêm bài viết Sử dụng biến môi trường cho các thuộc tính cấu hình.