Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Boto3 का उपयोग करके AWS Secrets Manager से बाइनरी/एन्क्रिप्टेड प्रारूप से प्लेन टेक्स्ट में सीक्रेट कुंजियाँ प्राप्त करना


समस्या कथन: AWS Secrets Manager में मौजूद बाइनरी/एन्क्रिप्टेड प्रारूप से सीक्रेट कुंजियों को प्लेन टेक्स्ट के रूप में प्राप्त करने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें।

समस्या हल करने का दृष्टिकोण/एल्गोरिदम

  • चरण 1: boto3 और botocore एक्सेप्शन आयात करें ताकि एक्सेप्शन संभाले जा सकें।

  • चरण 2: secret_stored_location आवश्यक पैरामीटर है। यह वह स्थान है जहां सीक्रेट्स सहेजे गए हैं।

  • चरण 3: boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं। सुनिश्चित करें कि डिफ़ॉल्ट प्रोफ़ाइल में region_name उल्लिखित है। यदि नहीं, तो सत्र बनाते समय स्पष्ट रूप से region_name पास करें।

  • चरण 4: secretmanager के लिए AWS क्लाइंट बनाएं।

  • चरण 5: get_secret_value कॉल करें और secret_stored_location को SecretId के रूप में पास करें।

  • चरण 6: जांचें कि यह प्लेन टेक्स्ट है या एन्क्रिप्टेड।

  • चरण 7: यदि यह एन्क्रिप्टेड है, तो base64.b64decode का उपयोग करके बाइनरी मानों को डीकोड करने के लिए फ़ंक्शन कॉल करें।

  • चरण 8: यह दिए गए स्थान पर सभी सीक्रेट्स को डिक्रिप्टेड मोड में, यानी प्लेन टेक्स्ट में लौटाता है।

  • चरण 9: मान प्राप्त करते समय यदि कुछ गलत होता है तो सामान्य एक्सेप्शन को संभालें।

उदाहरण कोड

AWS Secrets Manager से डिक्रिप्टेड प्लेन टेक्स्ट सीक्रेट प्राप्त करने के लिए निम्न कोड का उपयोग करें:

import boto3
import base64
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 'SecretString' not in response:
            decoded_secret_values = base64.b64decode(response['SecretBinary'])
            return decoded_secret_values
        else:
            return response['SecretString']
    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)

आउटपुट

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

महत्वपूर्ण सुधार और स्पष्टीकरण

  • मूल कोड में त्रुटि: base64 मॉड्यूल आयात नहीं किया गया था। उपरोक्त कोड में इसे जोड़ा गया है।

  • लॉजिक सुधार: मूल कोड में यदि SecretString मौजूद है तो कुछ नहीं लौटाता था। उपरोक्त कोड दोनों मामलों को संभालता है।

  • Secrets Manager स्वचालित रूप से एन्क्रिप्शन/डिक्रिप्शन संभालता है। SecretString प्लेनटेक्स्ट के लिए और SecretBinary बाइनरी डेटा के लिए उपयोग किया जाता है।

  • यदि SecretBinary मौजूद है, तो यह base64-एन्कोडेड बाइनरी डेटा होता है जिसे डिकोड करने की आवश्यकता होती है।

IAM अनुमति

secretsmanager:GetSecretValue अनुमति आवश्यक है। KMS डिक्रिप्शन के लिए kms:Decrypt भी आवश्यक हो सकता है यदि कस्टम KMS कुंजी उपयोग की गई है।


  1. - Boto3 का उपयोग करके AWS Glue डेटा कैटलॉग से कनेक्शन का विवरण कैसे प्राप्त करें?

    समस्या विवरण - Python में boto3 लाइब्रेरी का उपयोग करके AWS Glue डेटा कैटलॉग में मौजूद कनेक्शन का विवरण प्राप्त करें।उदाहरण - कनेक्शन परिभाषा, aurora-test का विवरण प्राप्त करें।इस समस्या को हल करने का दृष्टिकोण/एल्गोरिदमचरण 1 - अपवादों को संभालने के लिए boto3 और botocore एक्सेप्शन्स आयात करें।चरण 2

  1. - Boto3 का उपयोग करके AWS Glue डेटा कैटलॉग से क्लासिफायर का विवरण कैसे प्राप्त करें?

    समस्या विवरण - Python में boto3 लाइब्रेरी का उपयोग करके AWS Glue डेटा कैटलॉग से क्लासिफायर का विवरण प्राप्त करें। उदाहरण के लिए, क्लासिफायर xml-test का विवरण प्राप्त करें।इस समस्या को हल करने का दृष्टिकोण/एल्गोरिदमचरण 1 - अपवादों को संभालने के लिए boto3 और botocore एक्सेप्शन्स आयात करें।चरण 2 - पैरा

  1. - Boto3 का उपयोग करके माइग्रेशन ऑपरेशन का स्टेटस कैसे प्राप्त करें?

    समस्या विवरण - Python में boto3 लाइब्रेरी का उपयोग करके माइग्रेटिंग ऑपरेशन का स्टेटस प्राप्त करें।उदाहरण - अकाउंट में माइग्रेशन ऑपरेशन का स्टेटस प्राप्त करें।इस समस्या को हल करने का दृष्टिकोण/एल्गोरिदमचरण 1 - अपवादों को संभालने के लिए boto3 और botocore एक्सेप्शन्स आयात करें।चरण 2 - पैरामीटर catalog_