Nodejs kiểm tra độ mạnh của mật khẩu

Bạn có thể kiểm soát quyền truy cập vào các cụm Amazon MSK của mình bằng tên người dùng và mật khẩu được lưu trữ và bảo mật bằng AWS Secrets Manager. Lưu trữ thông tin đăng nhập của người dùng trong Secrets Manager giúp giảm chi phí xác thực cụm chẳng hạn như kiểm tra, cập nhật và luân phiên thông tin đăng nhập. Secrets Manager cũng cho phép bạn chia sẻ thông tin đăng nhập của người dùng trên các cụm

Chủ đề này có chứa các phần sau

Làm thế nào nó hoạt động

Xác thực tên người dùng và mật khẩu cho Amazon MSK sử dụng xác thực SASL/SCRAM (Lớp xác thực và bảo mật đơn giản/ Cơ chế phản hồi thử thách có muối). Để thiết lập xác thực tên người dùng và mật khẩu cho một cụm, bạn tạo tài nguyên Bí mật trong AWS Secrets Manager, đồng thời liên kết tên người dùng và mật khẩu với bí mật đó

SASL/SCRAM được định nghĩa trong RFC 5802. SCRAM sử dụng thuật toán băm bảo mật và không truyền mật khẩu văn bản gốc giữa máy khách và máy chủ

Khi bạn thiết lập xác thực SASL/SCRAM cho cụm của mình, Amazon MSK sẽ bật mã hóa TLS cho tất cả lưu lượng giữa máy khách và nhà môi giới

Thiết lập xác thực SASL/SCRAM cho cụm Amazon MSK

Để thiết lập bí mật trong AWS Secrets Manager, hãy làm theo hướng dẫn Tạo và truy xuất bí mật trong Hướng dẫn sử dụng AWS Secrets Manager

Lưu ý các yêu cầu sau khi tạo bí mật cho cụm Amazon MSK

  • Chọn Loại bí mật khác (e. g. khóa API) cho loại bí mật

  • Tên bí mật của bạn phải bắt đầu bằng tiền tố AmazonMSK_

  • Bạn phải sử dụng khóa AWS KMS tùy chỉnh hiện có hoặc tạo khóa AWS KMS tùy chỉnh mới cho bí mật của mình. Theo mặc định, Trình quản lý bí mật sử dụng khóa AWS KMS mặc định cho một bí mật

    Không thể sử dụng bí mật được tạo bằng khóa AWS KMS mặc định với cụm Amazon MSK

  • Dữ liệu người dùng và mật khẩu của bạn phải ở định dạng sau để nhập các cặp khóa-giá trị bằng tùy chọn Văn bản gốc

    {
      "username": "alice",
      "password": "alice-secret"
    }
  • Ghi lại giá trị ARN (Tên tài nguyên Amazon) cho bí mật của bạn

  • Bạn không thể liên kết một bí mật Secrets Manager với một cụm vượt quá giới hạn được mô tả trong Right-size your cluster. Số lượng phân vùng cho mỗi nhà môi giới

  • Nếu bạn sử dụng AWS CLI để tạo khóa bí mật, hãy chỉ định ID khóa hoặc ARN cho tham số

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    2. Không chỉ định bí danh

  • Để liên kết bí mật với cụm của bạn, hãy sử dụng bảng điều khiển Amazon MSK hoặc thao tác BatchAssociateScramSecret

    Khi bạn liên kết một bí mật với một cụm, Amazon MSK sẽ đính kèm một chính sách tài nguyên vào bí mật để cho phép cụm của bạn truy cập và đọc các giá trị bí mật mà bạn đã xác định. Bạn không nên sửa đổi chính sách tài nguyên này. Làm như vậy có thể ngăn cụm của bạn truy cập bí mật của bạn

    Ví dụ đầu vào JSON sau đây cho hoạt động

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    3 liên kết một bí mật với một cụm

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }

Kết nối với cụm của bạn bằng tên người dùng và mật khẩu

Sau khi bạn tạo một bí mật và liên kết nó với cụm của mình, bạn có thể kết nối máy khách của mình với cụm. Các bước ví dụ sau minh họa cách kết nối máy khách với cụm sử dụng xác thực SASL/SCRAM và cách tạo và sử dụng từ một chủ đề mẫu

  1. Truy xuất chi tiết cụm của bạn bằng lệnh sau. Thay thế

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    4 bằng Tên tài nguyên Amazon (ARN) của cụm của bạn

    aws kafka describe-cluster --cluster-arn "ClusterArn"

    Từ kết quả JSON của lệnh, lưu giá trị được liên kết với chuỗi có tên là

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    5

  2. Để tạo một chủ đề ví dụ, hãy chạy lệnh sau trên máy khách của bạn. Thay thế

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    5 bằng chuỗi bạn đã ghi ở bước trước

    ________số 8
  3. Trên máy khách của bạn, hãy tạo tệp cấu hình JAAS chứa thông tin đăng nhập của người dùng được lưu trữ trong bí mật của bạn. Ví dụ: đối với người dùng alice, tạo một tệp tên là

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    7 với nội dung sau

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    0
  4. Sử dụng lệnh sau để xuất tệp cấu hình JAAS của bạn dưới dạng tham số môi trường

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    8

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    2
  5. Tạo một tệp có tên

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    9 trong thư mục
    aws kafka describe-cluster --cluster-arn "ClusterArn"
    0

  6. Sử dụng lệnh sau để sao chép tệp lưu trữ khóa JDK từ thư mục JVM

    aws kafka describe-cluster --cluster-arn "ClusterArn"
    1 của bạn vào tệp
    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    9 mà bạn đã tạo ở bước trước. Thay thế
    aws kafka describe-cluster --cluster-arn "ClusterArn"
    3 bằng tên của thư mục JDK trên phiên bản của bạn. Ví dụ: thư mục JDK của bạn có thể được đặt tên là
    aws kafka describe-cluster --cluster-arn "ClusterArn"
    4

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    9
  7. Trong thư mục

    aws kafka describe-cluster --cluster-arn "ClusterArn"
    5 của bản cài đặt Apache Kafka của bạn, hãy tạo một tệp thuộc tính ứng dụng khách có tên là
    aws kafka describe-cluster --cluster-arn "ClusterArn"
    6 với các nội dung sau. Tệp này xác định cơ chế và giao thức SASL

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    2
  8. Truy xuất chuỗi trình môi giới bootstrap của bạn bằng lệnh sau. Thay thế

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    4 bằng Tên tài nguyên Amazon (ARN) của cụm của bạn

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    4

    Từ kết quả JSON của lệnh, lưu giá trị được liên kết với chuỗi có tên là

    aws kafka describe-cluster --cluster-arn "ClusterArn"
    8

  9. Để tạo chủ đề ví dụ mà bạn đã tạo, hãy chạy lệnh sau trên máy khách của bạn. Thay thế

    aws kafka describe-cluster --cluster-arn "ClusterArn"
    8 bằng giá trị mà bạn đã truy xuất ở bước trước

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    7
  10. Để sử dụng từ chủ đề bạn đã tạo, hãy chạy lệnh sau trên máy khách của bạn. Thay thế

    aws kafka describe-cluster --cluster-arn "ClusterArn"
    8 bằng giá trị mà bạn đã nhận được trước đó

    {
      "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
      "secretArnList": [
        "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
      ]
    }
    0

Làm việc với người dùng

Tạo người dùng. Bạn tạo người dùng trong bí mật của mình dưới dạng cặp khóa-giá trị. Khi bạn sử dụng tùy chọn Văn bản gốc trong bảng điều khiển Trình quản lý bí mật, bạn nên chỉ định dữ liệu tên người dùng và mật khẩu ở định dạng sau

{
  "username": "alice",
  "password": "alice-secret"
}

Thu hồi quyền truy cập của người dùng. Để thu hồi thông tin đăng nhập của người dùng để truy cập vào một cụm, chúng tôi khuyên bạn trước tiên nên xóa hoặc thực thi ACL trên cụm, sau đó hủy liên kết bí mật. Điều này là do sau đây

  • Xóa người dùng không đóng các kết nối hiện có

  • Các thay đổi đối với bí mật của bạn mất tối đa 10 phút để phổ biến

Để biết thông tin về cách sử dụng ACL với Amazon MSK, hãy xem Apache Kafka ACL

Chúng tôi khuyên bạn nên hạn chế quyền truy cập vào các nút quản lý vườn thú của mình để ngăn người dùng sửa đổi ACL. Để biết thêm thông tin, hãy xem Kiểm soát quyền truy cập vào Apache ZooKeeper

Hạn chế

Lưu ý các hạn chế sau khi sử dụng bí mật SCRAM

  • Amazon MSK chỉ hỗ trợ xác thực SCRAM-SHA-512

  • Một cụm Amazon MSK có thể có tới 1000 người dùng

  • Bạn phải sử dụng khóa AWS KMS với Bí mật của mình. Bạn không thể sử dụng Bí mật sử dụng khóa mã hóa Trình quản lý bí mật mặc định với Amazon MSK. Để biết thông tin về cách tạo khóa KMS, hãy xem Tạo khóa KMS mã hóa đối xứng

  • Bạn không thể sử dụng khóa KMS bất đối xứng với Secrets Manager

  • Bạn có thể liên kết tối đa 10 bí mật với một cụm tại một thời điểm bằng thao tác BatchAssociateScramSecret

  • Tên của bí mật được liên kết với cụm Amazon MSK phải có tiền tố AmazonMSK_

  • Các bí mật được liên kết với cụm Amazon MSK phải nằm trong cùng một tài khoản Amazon Web Services và khu vực AWS với cụm