Computer >> Máy Tính >  >> Lập trình >> Python

Cách sử dụng Boto3 để lấy khóa bí mật dưới dạng văn bản thuần túy từ định dạng nhị phân / mã hóa trong Trình quản lý bí mật AWS

Tuyên bố sự cố: Sử dụng boto3 thư viện bằng Python để nhận các khóa bí mật dưới dạng văn bản thuần túy từ định dạng nhị phân / mã hóa có trong AWS Secret Manager

Phương pháp tiếp cận / Thuật toán để giải quyết vấn đề này

  • Bước 1: Nhập boto3 botocore các ngoại lệ để xử lý các ngoại lệ.

  • Bước 2: secret_stored_location là tham số bắt buộc. Đó là nơi lưu giữ những bí mật.

  • Bước 3: Tạo phiên AWS bằng boto3 lib . Đảm bảo rằng region_name được đề cập trong hồ sơ mặc định. Nếu nó không được đề cập, thì hãy chuyển region_name một cách rõ ràng trong khi tạo phiên.

  • Bước 4: Tạo ứng dụng AWS cho người quản lý thư ký .

  • Bước 5: Gọi cho get_secret_value và vượt qua secret_stored_location dưới dạng SecretId .

  • Bước 6: Kiểm tra xem đó là văn bản thuần túy hay được mã hóa.

  • Bước 7: Nếu nó được mã hóa, hãy gọi hàm để giải mã các giá trị nhị phân bằng base64.b64decode

  • Bước 8: Nó trả về tất cả các bí mật dưới dạng chế độ được giải mã, tức là văn bản thuần túy ở vị trí nhất định.

  • Bước 9: Xử lý ngoại lệ chung nếu có sự cố trong khi truy xuất giá trị.

Mã mẫu

Sử dụng mã sau để nhận bí mật văn bản thuần được giải mã từ Trình quản lý bí mật AWS -

import boto3
from botocore.exceptions import ClientError

def get_decrypted_secret_details(secret_stored_location):
   session = boto3.session.Session()
   s3_client = session.client('secretmanager')
   try:
   response = s3_client.get_secret_value(SecretId=secret_stored_location)
   if not ('SecretString' in response):
      decoded_secret_values = base64.b64decode(response['SecretBinary'])
   return decoded_secret_values
      except ClientError as e:
         raise Exception("boto3 client error in get_decrypted_secret_details: " + e.__str__())
      except Exception as e:
         raise Exception("Unexpected error in get_decrypted_secret_details: " + e.__str__())

a = get_decrypted_secret_details('/secrets/aws')
print(a)

Đầu ra

{"user":"SERVICE_USER","accesskey":"I**************"}