AWS Secrets Manager এবং Parameter Store এর সাথে Lambda ইন্টিগ্রেশন

Lambda Security এবং Authentication - এডাব্লিউএস ল্যাম্বডা (AWS Lambda) - Web Development

246

AWS Lambda ফাংশনের জন্য সিক্রেট ডেটা (যেমন API কী, ডাটাবেস পাসওয়ার্ড, কনফিগারেশন সেটিংস) পরিচালনা করা একটি গুরুত্বপূর্ণ বিষয়। এ ধরণের সিক্রেট ডেটা নিরাপদভাবে সংরক্ষণ এবং অ্যাক্সেস করার জন্য AWS Secrets Manager এবং AWS Systems Manager Parameter Store ব্যবহার করা হয়। এই দুটি সেবাই নিরাপদভাবে এবং সহজভাবে সংরক্ষিত কনফিগারেশন ডেটা বা পাসওয়ার্ড Lambda ফাংশনের মধ্যে ইনজেক্ট করে, যাতে আপনি সিক্রেট ডেটা সরাসরি কোডে হার্ডকোড না করেন।

এখন, চলুন দেখে নেওয়া যাক কীভাবে AWS Secrets Manager এবং Parameter Store এর সাথে Lambda ফাংশন ইন্টিগ্রেট করা যায়।


AWS Secrets Manager কি?

AWS Secrets Manager একটি সেবাযুক্ত নিরাপদ এবং স্কেলেবল সিস্টেম যা অ্যাপ্লিকেশন, ডাটাবেস, এবং অন্যান্য সিস্টেমের জন্য সিক্রেট ডেটা (যেমন API কী, ক্রেডেনশিয়ালস, ডাটাবেস পাসওয়ার্ড) ম্যানেজ করে। এটি automatic rotation সুবিধা প্রদান করে, যার মাধ্যমে সিক্রেট ডেটার সময়সীমা শেষ হলে তা স্বয়ংক্রিয়ভাবে রিনিউ হয়।

AWS Secrets Manager এর সুবিধাসমূহ:

  • নিরাপত্তা: সমস্ত সিক্রেট ডেটা এনক্রিপ্টেড অবস্থায় সংরক্ষিত থাকে।
  • automatic rotation: সিক্রেট ডেটা নিজে নিজে রোটেট হয়, যা নিরাপত্তা নিশ্চিত করে।
  • প্রবেশাধিকার নিয়ন্ত্রণ: IAM পলিসির মাধ্যমে নিরাপদ অ্যাক্সেস কন্ট্রোল।

AWS Systems Manager Parameter Store কি?

AWS Systems Manager Parameter Store হল একটি ক্লাউড সেবাযুক্ত প্যারামিটার ম্যানেজমেন্ট সিস্টেম যা নিরাপদভাবে প্যারামিটার (যেমন API কী, সিস্টেম কনফিগারেশন, এবং পাসওয়ার্ড) সংরক্ষণ এবং পরিচালনা করতে সাহায্য করে। এটি দুই ধরনের প্যারামিটার সংরক্ষণ করতে সক্ষম:

  • SecureString (এনক্রিপ্টেড প্যারামিটার)
  • String (টেক্সট প্যারামিটার)

Parameter Store এর সুবিধাসমূহ:

  • নিরাপত্তা: SecureString ব্যবহার করে প্যারামিটার এনক্রিপ্ট করা হয়।
  • স্কেলেবল: একাধিক অ্যাপ্লিকেশন এবং সার্ভিসের জন্য একই প্যারামিটার ব্যবহৃত হতে পারে।
  • সহজ ইনটিগ্রেশন: AWS SDK বা CLI ব্যবহার করে সহজেই Lambda ফাংশনে ইন্টিগ্রেট করা যায়।

AWS Lambda এর সাথে Secrets Manager এবং Parameter Store এর ইন্টিগ্রেশন

1. AWS Secrets Manager ব্যবহার করে Lambda ফাংশনে সিক্রেট অ্যাক্সেস করা

AWS Secrets Manager থেকে সিক্রেট ডেটা Lambda ফাংশনে অ্যাক্সেস করার জন্য আপনাকে নিচের পদক্ষেপগুলো অনুসরণ করতে হবে:

1.1. Secrets Manager এ সিক্রেট তৈরি করুন
  • AWS Management Console এ গিয়ে Secrets Manager সেবা নির্বাচন করুন।
  • Store a new secret বেছে নিন এবং আপনার সিক্রেট ডেটা (যেমন ডাটাবেস পাসওয়ার্ড) অ্যাড করুন।
  • সিক্রেটের জন্য একটি নাম দিন এবং সিক্রেটটি সংরক্ষণ করুন।
1.2. Lambda ফাংশনে IAM পলিসি যুক্ত করুন
  • Lambda ফাংশনটি Secrets Manager এ অ্যাক্সেস করতে হলে IAM role এর মধ্যে সঠিক পলিসি যোগ করতে হবে। এটি Secrets Manager এ secretsmanager:GetSecretValue অ্যাক্সেস দেয়।

    উদাহরণস্বরূপ, নিচে একটি IAM পলিসি রয়েছে যা Lambda ফাংশনকে Secrets Manager থেকে সিক্রেট অ্যাক্সেস করার অনুমতি দেয়:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "arn:aws:secretsmanager:region:account-id:secret:your-secret-name"
    }
  ]
}
1.3. Lambda ফাংশনে Secrets Manager থেকে সিক্রেট ফেচ করা

Lambda ফাংশনে AWS SDK ব্যবহার করে সিক্রেট ডেটা ফেচ করতে হবে:

import boto3
import json
from botocore.exceptions import ClientError

def lambda_handler(event, context):
    secret_name = "your-secret-name"
    region_name = "your-region"

    # Secrets Manager ক্লায়েন্ট তৈরি
    client = boto3.client('secretsmanager', region_name=region_name)

    try:
        # সিক্রেট ডেটা ফেচ করা
        get_secret_value_response = client.get_secret_value(SecretId=secret_name)
        
        # সিক্রেট ডেটা প্রসেস করা
        if 'SecretString' in get_secret_value_response:
            secret = get_secret_value_response['SecretString']
        else:
            decoded_binary_secret = get_secret_value_response['SecretBinary']
            secret = decoded_binary_secret.decode('utf-8')

        # সিক্রেট ব্যবহার
        print("Secret fetched: ", secret)
    
    except ClientError as e:
        print("Error fetching secret: ", e)
        raise e

    return {
        'statusCode': 200,
        'body': json.dumps('Lambda function executed successfully!')
    }

2. AWS Systems Manager Parameter Store ব্যবহার করে Lambda ফাংশনে প্যারামিটার অ্যাক্সেস করা

2.1. Parameter Store এ প্যারামিটার তৈরি করুন
  • AWS Management Console এ গিয়ে Systems Manager সেবা নির্বাচন করুন।
  • Parameter Store নির্বাচন করুন এবং একটি নতুন প্যারামিটার তৈরি করুন, যেমন: DB_PASSWORD
  • প্যারামিটারটি SecureString হিসেবে তৈরি করুন (যদি পাসওয়ার্ড বা অন্য কোনো সংবেদনশীল ডেটা থাকে)।
2.2. Lambda ফাংশনে IAM পলিসি যোগ করুন

Lambda ফাংশনটি Parameter Store থেকে প্যারামিটার অ্যাক্সেস করতে হলে IAM rolessm:GetParameter অ্যাক্সেস থাকতে হবে।

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ssm:GetParameter",
      "Resource": "arn:aws:ssm:region:account-id:parameter/your-parameter-name"
    }
  ]
}
2.3. Lambda ফাংশনে Parameter Store থেকে প্যারামিটার ফেচ করা

Lambda ফাংশনে AWS SDK ব্যবহার করে Parameter Store থেকে প্যারামিটার ফেচ করতে হবে:

import boto3
import json

def lambda_handler(event, context):
    parameter_name = "your-parameter-name"
    region_name = "your-region"
    
    # SSM ক্লায়েন্ট তৈরি
    ssm_client = boto3.client('ssm', region_name=region_name)

    # প্যারামিটার ফেচ করা
    response = ssm_client.get_parameter(Name=parameter_name, WithDecryption=True)

    # প্যারামিটার ডেটা
    parameter_value = response['Parameter']['Value']
    print("Parameter fetched: ", parameter_value)

    return {
        'statusCode': 200,
        'body': json.dumps('Lambda function executed successfully!')
    }

সারাংশ

AWS Secrets Manager এবং AWS Systems Manager Parameter Store এর সাথে Lambda ফাংশনের ইন্টিগ্রেশন সিক্রেট ডেটা এবং কনফিগারেশন প্যারামিটার নিরাপদভাবে ম্যানেজ করার একটি শক্তিশালী উপায়। AWS SDK ব্যবহার করে Lambda ফাংশনে সিক্রেট বা প্যারামিটার অ্যাক্সেস করা যেতে পারে, এবং IAM পলিসির মাধ্যমে সঠিক অ্যাক্সেস নিয়ন্ত্রণ করা হয়। Secrets Manager সাধারণত ডাইনামিক সিক্রেট রোটেশন সমর্থন করে, যেখানে Parameter Store সাধারণত কনফিগারেশন প্যারামিটার এবং সিক্রেট স্টোরেজের জন্য ব্যবহৃত হয়। এই ইন্টিগ্রেশন নিরাপদভাবে সিক্রেট ডেটা ব্যবহার এবং Lambda ফাংশনে তাদের অ্যাক্সেস প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...