21.3
SSM Parameter Store বনাম Secrets Manager
hierarchy, tier আর policy, secret rotation, multi-Region secret, আর দুটোর মধ্যে কোনটা নেবে।
20 মিনিট পড়া + Animation
টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।
এই লেসন শেষে তুমি পারবে
- বুঝিয়ে বলতে, password, API key আর configuration কেন code, AMI বা environment file-এ রাখা চলে না, আর AWS-এর কোন দুটো service এই কাজের জন্য।
- SSM Parameter Store ব্যবহার করতে: parameter-এর type (
String,StringList, KMS দিয়েSecureString),/shop/prod/db_url-এর মতো hierarchy, path ধরে IAM,GetParametersByPath, AMI-র public parameter আর Secrets Manager-এর reference। - Standard আর Advanced tier-এর মধ্যে বাছতে (১০,০০০ বনাম ১,০০,০০০ parameter, 4 KB বনাম 8 KB, ফ্রি বনাম মাসে ০.০৫ USD), default আর higher throughput জানতে, আর parameter policy (Expiration, ExpirationNotification, NoChangeNotification) কাজে লাগাতে।
- AWS Secrets Manager বুঝিয়ে বলতে: KMS দিয়ে encrypt করা secret, secret-এর automatic rotation (managed rotation, নয়তো চার ধাপ আর তিনটা staging label-ওয়ালা Lambda function), RDS-এর সাথে যোগ, দাম, resource policy আর multi-Region secret।
- চেনা গোলমালগুলো ধরতে:
kms:Decryptছাড়া role, network পথ না পাওয়া rotation function, চিরকাল password cache করে রাখা application, শুধু এক Region-এ থাকা secret। - Scenario-র keyword দেখে Parameter Store নাকি Secrets Manager, ঠিক করতে।
#কেন: code-এ রাখা password সবার password
লেসন ২১.১ আর ২১.২-এ আমরা দেখেছি ডেটা কীভাবে encrypt হয় আর key কীভাবে সামলাতে হয়। এই লেসন ছোট কিন্তু আরও বিপজ্জনক এক ধরনের ডেটা নিয়ে: application চালাতে যেসব value লাগে। Database-এর URL, database-এর password, payment gateway-র API key, একটা feature flag, কোন AMI ID দিয়ে launch হবে।
#সমস্যাটা কোথায়
ঢাকার একটা online shop, Daraz-এর মতো ছোট একটা marketplace, শুরু করেছিল সবাই যেভাবে করে। Database password বসানো ছিল config.py-তে, payment gateway-র key একটা .env file-এ, যেটা AMI-র ভেতরেই ঢুকে গিয়েছিল, আর debug করতে developer-রা production-এর setting নিজেদের laptop-এ কপি করত। তারপর এক বছরে তিনটা ঘটনা ঘটল:
- এক contractor কয়েক ঘণ্টার জন্য repository-টা একটা public Git host-এ push করে ফেলল। Password আর key চিরকালের মতো তার history-তে রয়ে গেল।
- Security auditor জানতে চাইলেন, গত ৯০ দিনে payment key কে কে পড়েছে। কেউ উত্তর দিতে পারল না।
- Payment gateway-র পেছনের bank বলল, key প্রতি ৩০ দিনে বদলাতে হবে। বদলানো মানে প্রতিবার নতুন AMI আর নতুন করে deploy।
সমাধান হলো এই value-গুলো application-এর বাইরে রাখা, এমন একটা service-এ যেটা এগুলো encrypt করে রাখে, IAM দিয়ে ঠিক করে প্রতিটা value কে পড়তে পারবে, প্রতিটা পড়া CloudTrail-এ লিখে রাখে, আর deploy ছাড়াই value বদলাতে পারে। AWS-এ এমন দুটো service আছে:
- AWS Systems Manager Parameter Store (SSM Parameter Store): configuration আর সাধারণ secret রাখার সস্তা, সহজ, hierarchy-ওয়ালা জায়গা।
- AWS Secrets Manager: শুধু secret-এর জন্য বানানো, টাকা লাগে এমন service, যার সবচেয়ে বড় গুণ automatic rotation।
#SSM Parameter Store
#কী রাখা যায়
Parameter Store হলো AWS Systems Manager-এর একটা tool (পুরো service-টা লেসন ২৫.৩-এ)। এটা configuration ডেটা আর secret রাখার নিরাপদ, serverless, টেকসই একটা জায়গা, যেখান থেকে একটা সহজ SDK বা CLI call দিয়ে পড়া যায়। প্রতিটা parameter হলো একটা নাম আর একটা value, তিন type-এর যেকোনো একটা:
| Type | কী রাখে | উদাহরণ |
|---|---|---|
String | সাধারণ লেখা | /shop/prod/db_url = shop-prod.example:5432 |
StringList | কমা দিয়ে আলাদা করা তালিকা | /shop/prod/allowed_cities = Dhaka,Chattogram,Sylhet |
SecureString | KMS key দিয়ে encrypt করা লেখা: default হলো AWS managed key aws/ssm, চাইলে নিজের বাছা customer managed key | /shop/prod/db_password |
কাজের কিছু বৈশিষ্ট্য:
- Encryption ঐচ্ছিক, আর ঝামেলাহীন।
SecureStringজমা রাখার সময় encrypt হয়, আর decrypt হয় শুধু তখন, যখন কোনো caller decryption চালু রেখে (--with-decryption) চায় আর তার KMS key ব্যবহারের অনুমতি থাকে (লেসন ২১.২)। Standard parameter সরাসরি KMS দিয়ে encrypt হয়; Advanced parameter-এ হয় envelope encryption, আর এটাও একটা কারণ যে parameter এক tier থেকে আরেক tier-এ ফেরত যেতে পারে না। - Version। প্রতিটা বদলে নতুন version হয়; Parameter Store শেষ ১০০টা রাখে। পুরোনো version পড়া যায় (
name:3), বা কোনো একটা version-এapproved-এর মতো label বসানো যায়। - IAM দিয়ে নিরাপত্তা। কে কোন parameter পড়তে বা লিখতে পারবে, ঠিক করে parameter-এর ARN-এর ওপর IAM policy, আর প্রতিটা call CloudTrail-এ লেখা থাকে (লেসন ১৯.৬)।
- EventBridge দিয়ে খবর। Parameter বদলালে বা policy-র কোনো event হলে rule চালু হতে পারে (লেসন ১৯.৫)।
- সবখানে যোগ। CloudFormation, EC2 launch template, ECS task definition, Lambda, build pipeline আর Systems Manager-এর বাকি tool সরাসরি parameter পড়তে পারে।
- Data type
aws:ec2:image। কোনোStringparameter-কে AMI ID রাখার parameter হিসেবে চিহ্নিত করা যায়; তখন Parameter Store রাখার আগে দেখে নেয় ID-টা আসলেই আছে কি না।
#Hierarchy আর IAM
Parameter-এর নামে slash থাকতে পারে, তাই এগুলো folder-এর মতো সাজানো যায়, ১৫ স্তর পর্যন্ত। চেনা একটা সাজানো হলো আগে application, তারপর environment, তারপর setting:
/shop/
dev/
db_url
db_password (SecureString)
payment/mode
prod/
db_url
db_password (SecureString)
payment/api_key (SecureString)
/billing/
prod/...
এর থেকে দুটো সুবিধা আসে:
- এক লাইনের IAM-এ environment ধরে access। Parameter-এর ARN-এর ভেতরেই তার নাম, যেমন
arn:aws:ssm:ap-southeast-1:111122223333:parameter/shop/prod/db_password। তাইparameter/shop/dev/*-এর ওপর একটা policy ঠিক development folder-টাই দেয়, আর কিছু না। IAM-এর সাধারণ নিয়মই খাটে: Allow না থাকা মানে implicit deny (লেসন ২.২)। - এক call-এ পুরো folder।
/shop/dev/path দিয়েGetParametersByPath(sub-folder-এর জন্য--recursiveসহ) ওই path-এর নিচের সব parameter ফেরত দেয়, এক page-এ ১০টা করে, তাই application-কে নামের তালিকা রাখতে হয় না।GetParametersএকবারে নাম ধরে ১০টা পর্যন্ত parameter আনে।
Development-এর EC2 instance-এর role-এর শুধু এটুকু লাগে:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["ssm:GetParameter", "ssm:GetParameters", "ssm:GetParametersByPath"],
"Resource": "arn:aws:ssm:ap-southeast-1:111122223333:parameter/shop/dev/*"
},
{
"Effect": "Allow",
"Action": "kms:Decrypt",
"Resource": "arn:aws:kms:ap-southeast-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
]
}
দ্বিতীয় statement-টা দরকার শুধু সেই SecureString value-র জন্য, যেগুলো customer managed key দিয়ে encrypt করা: parameter পড়া আর সেটা decrypt করা দুটো আলাদা অনুমতি। AWS managed key aws/ssm হলে তার key policy আগে থেকেই একই account-এর principal-দের Parameter Store-এর মাধ্যমে key ব্যবহার করতে দেয়।
Parameter Store থেকে configuration পড়া
ঢাকার একটা online shop তার setting রাখে /shop/dev/ আর /shop/prod/-এর নিচে। আলাদা IAM role নিয়ে দুটো EC2 app সেগুলো পড়ে। প্রতিটা call-এ IAM আর KMS কী কী যাচাই করে, দেখো।
পরিস্থিতি
Password জমা থাকে encrypt অবস্থায়; অনুমতি থাকা caller-এর জন্যই শুধু Parameter Store KMS-কে দিয়ে সেটা decrypt করায়।
Request
নাম
/shop/prod/db_password
Decryption সহ
true
চালু হওয়ার সময় prod app decryption চালু রেখে /shop/prod/db_password চায়। Password code-এ নেই, AMI-তে নেই, Git repository-তেও নেই, তাই repository ফাঁস হলেও কিছু ফাঁস হয় না।
#Public parameter আর Secrets Manager-এর reference
দুটো বিশেষ path জেনে রাখা ভালো:
/aws/service/...: AWS-এর প্রকাশ করা public parameter। সবচেয়ে পরিচিত হলো সবচেয়ে নতুন AMI ID, যেমন/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64। প্রতিটা Region-এ এটা আছে, সেই Region-এর ID নিয়ে, পড়তে কোনো টাকা লাগে না, আর launch template বা CloudFormation template নির্দিষ্ট AMI ID-র বদলে parameter-এর নাম লিখতে পারে (লেসন ৪.৩)। Region আর service-এর তালিকা, আর অন্য AMI (Windows, Bottlerocket, ECS-optimised)-ও AWS এভাবেই প্রকাশ করে।/aws/reference/secretsmanager/<secret-name>: Secrets Manager পর্যন্ত সোজা রাস্তা। এই path-এ decryption চালু রেখেGetParameterকরলে Secrets Manager থেকে secret-টা ফেরত আসে, তাই যে code বা tool আগে থেকে Parameter Store পড়ে, নতুন SDK ছাড়াই সে একটা secret পড়তে পারে। এই path-এ চলে শুধুGetParameterআরGetParameters(GetParametersByPathনা, লেখা না, version না), আর caller-এর secret-এর ওপর অনুমতিও লাগে। Parameter Store নিজে কিছুই রাখে না: secret থাকে Secrets Manager-এই।
#Standard আর Advanced tier
প্রতিটা parameter একটা tier-এ থাকে, account আর Region ধরে:
| Standard | Advanced | |
|---|---|---|
| সর্বোচ্চ কতগুলো parameter (account আর Region প্রতি) | ১০,০০০ | ১,০০,০০০ |
| Value-র সর্বোচ্চ মাপ | 4 KB | 8 KB |
| Parameter policy | নেই | আছে |
| অন্য account-এর সাথে share (AWS Resource Access Manager) | না | হ্যাঁ |
| রাখার খরচ | কোনো টাকা নেই | প্রতি parameter মাসে ০.০৫ USD (ঘণ্টা ধরে ভাগ করে) |
| সাধারণ throughput-এ API call | কোনো টাকা নেই | প্রতি ১০,০০০ interaction-এ ০.০৫ USD |
| Tier বদল | Advanced-এ তোলা যায় | Standard-এ আর ফেরানো যায় না |
Advanced parameter-কে নামানো যায় না, কারণ তার value 4 KB-র বড় হতে পারে, তার policy হারিয়ে যাবে, আর তার encryption-এর ধরনও আলাদা। টাকা দেওয়া বন্ধ করতে হলে মুছে ফেলো, তারপর নতুন একটা Standard parameter বানাও। Account-এর একটা default tier setting-ও আছে (Standard, Advanced, বা Intelligent-Tiering, যেটা Advanced বাছে শুধু তখন, যখন request-এর সেটা লাগে, যেমন 4 KB-র বড় value বা policy); এটা শুধু নতুন parameter-এর ওপর খাটে।
#Throughput: সেকেন্ডে কতগুলো call
Tier ঠিক করে কী রাখা যাবে; throughput ঠিক করে সেকেন্ডে কত request, আর এটা আলাদা একটা setting:
- Default throughput: সেকেন্ডে ৪০টা transaction পর্যন্ত,
GetParameter,GetParametersআরGetParametersByPathমিলিয়ে, account আর Region প্রতি। Standard parameter-এর জন্য ফ্রি। - Higher throughput (account আর Region-এর একটাই setting): সেকেন্ডে ১০,০০০টা
GetParameter, ১,০০০টাGetParametersআর ১০০টাGetParametersByPathপর্যন্ত। তখন প্রতিটা API interaction-এর দাম লাগে, প্রতি ১০,০০০-এ ০.০৫ USD, Standard parameter-এর জন্যও। একটা request-এর একটা parameter মানে একটা interaction, তাই যে call দশটা parameter ফেরত দেয়, সেটা গোনা হয় দশটা। SecureStringপড়ার সময় Region-এর KMS request quota আরও সীমা টানতে পারে।
Throttle হওয়ার সাধারণ কারণ হলো এমন application, যে প্রতিটা request-এ parameter পড়ে। চালু হওয়ার সময় একবার পড়ো (বা Lambda environment initialise হওয়ার সময়), আর কয়েক মিনিট cache করে রাখো। Lambda-র জন্য AWS Parameters and Secrets Lambda Extension হলো দুটো service-এর জন্যই বানিয়ে রাখা একটা local cache।
#Parameter policy (শুধু Advanced-এ)
Parameter policy হলো Advanced parameter-এর গায়ে লাগানো একটা নিয়ম, যেটা Parameter Store নিজের নিয়মিত scan দিয়ে মানিয়ে চলে, তোমার কোনো code লাগে না। একটা parameter-এ ১০টা policy পর্যন্ত, তিন ধরনের:
| Policy | কী করে | উদাহরণ |
|---|---|---|
| Expiration | নির্দিষ্ট তারিখ আর সময়ে parameter মুছে দেয় (গোপন ডেটার জন্য একটা TTL) | ১ ডিসেম্বর partner-এর token মুছে দাও |
| ExpirationNotification | মেয়াদ শেষের কয়েক দিন বা ঘণ্টা আগে EventBridge-এ একটা event পাঠায় | ১৫ দিন আগে সতর্ক করো |
| NoChangeNotification | কয়েক দিন বা ঘণ্টা ধরে parameter বদলানো না হলে EventBridge-এ event পাঠায় | অনুমোদিত AMI ID ৬০ দিনের পুরোনো হলে জানাও |
[
{ "Type": "Expiration", "Version": "1.0", "Attributes": { "Timestamp": "2026-12-01T00:00:00.000Z" } },
{ "Type": "ExpirationNotification", "Version": "1.0", "Attributes": { "Before": "15", "Unit": "Days" } },
{ "Type": "NoChangeNotification", "Version": "1.0", "Attributes": { "After": "60", "Unit": "Days" } }
]
দুটো খুঁটিনাটিতে অনেকে আটকায়: parameter-এর value বদলালে তার মেয়াদের তারিখ সরে না (সেজন্য policy বদলাতে হয়), আর নতুন policy দিয়ে put-parameter করলে parameter-এর আগের সব policy মুছে নতুনগুলো বসে, তাই প্রতিবার পুরো তালিকাটাই পাঠাও।
Tier, parameter policy আর throughput
Shop-এর ops engineer বড় value রাখে, partner-এর একটা token-এর মেয়াদ বেঁধে দেয়, আর flash sale সামলায়। Standard tier কোথায় থামে আর টাকার option কোথা থেকে শুরু, দেখো।
পরিস্থিতি
Standard parameter-এ সর্বোচ্চ 4 KB ধরে। এর বড় value-র জন্য Advanced tier লাগে।
Request
নাম
/shop/prod/payment/routing
Tier
Standard
মাপ
6 KB
Engineer payment gateway-এর routing নিয়মের একটা 6 KB JSON Standard parameter হিসেবে রাখতে চায়, যেটা ফ্রি আর default।
#AWS Secrets Manager
#জিনিসটা কী
AWS Secrets Manager বানানোই হয়েছে শুধু secret-এর জন্য: database credential, third-party API key, OAuth client secret, SSH key। Parameter Store-এর তুলনায় এখানে এমন জিনিস যোগ হয়েছে, যেগুলো একটা secret-এর সারা জীবন ধরে লাগে:
- একটা secret হলো একটা নাম আর একটা value, সাধারণত key-value জোড়ার একটা JSON document (database হলে: engine, host, port, user name, password), 64 KB পর্যন্ত। Binary-ও হতে পারে।
- সবসময় KMS দিয়ে encrypt করা: AWS managed key
aws/secretsmanagerদিয়ে, বা তোমার বাছা customer managed key দিয়ে। Secrets Manager caller-এর হয়ে KMS ডাকে, তাই customer managed key হলে caller-এরsecretsmanager:GetSecretValue-এর সাথেkms:Decrypt-ও লাগে। - Version আর staging label। প্রতিটা value একটা version;
AWSCURRENT-এর মতো label বলে দেয় কোন version এখন চালু। সাধারণGetSecretValueফেরত দেয়AWSCURRENTversion। - নির্দিষ্ট schedule-এ automatic rotation, সবচেয়ে বড় গুণ (পরের অংশে)।
- Random password বানানো (
GetRandomPassword), যাতে কাউকে password বানিয়ে ভাবতে না হয়। - secret-এর গায়ে resource policy, অন্য account থেকে access-এর জন্য।
- Audit: প্রতিটা পড়া আর বদল CloudTrail-এ।
- যোগাযোগ: RDS, Aurora, Redshift আর DocumentDB নিজেদের admin password এখানে রাখতে পারে; RDS Proxy নিজের credential এখান থেকে পড়ে; ECS আর EKS container-এ secret ঢুকিয়ে দেয়; CloudFormation dynamic reference দিয়ে পড়ে।
দাম: প্রতি secret মাসে ০.৪০ USD (মাসের অংশ হলে ভাগ করে), সাথে প্রতি ১০,০০০ API call-এ ০.০৫ USD। অন্য Region-এর একটা replica-রও bill হয় একটা secret হিসেবে। প্রতিটা setting Secrets Manager-এ না রাখার মূল কারণ এটাই।
#Automatic rotation
Notes এই বৈশিষ্ট্যকে বলেছে “automatic key rotation”। কথাটা সহজেই ভুল বোঝা যায়: Secrets Manager rotate করে secret-এর value (password বা API key), আর database বা service-এও সেটা বদলে দেয়; কোনো KMS key rotate করে না। KMS key material-এর rotation KMS-এর আলাদা একটা বৈশিষ্ট্য (লেসন ২১.২)।
Schedule। UTC-তে একটা rate() বা cron() expression, প্রতি ৪ ঘণ্টা থেকে শুরু করে প্রতি ৯৯৯ দিন পর্যন্ত, সাথে একটা rotation window (অন্তত ১ ঘণ্টা), যার মধ্যে rotation হবে। Rotation চালু করলে default হিসেবে তখনই একবার rotate হয়। হাতে value বদলালে সেটাও পরের তারিখের হিসাবে একটা rotation ধরা হয়।
কাজটা হয় দুই উপায়ে:
- Managed rotation: secret-টা যে service-এর, সে নিজেই rotate করে, তোমার account-এ কোনো Lambda function ছাড়াই। Amazon RDS আর Aurora (master user), Redshift (admin password) আর DocumentDB (master user)-এ এটা আছে। “manage master credentials in AWS Secrets Manager” (
--manage-master-user-password) চালু করে database বানালে password বানানো, রাখা আর rotate করা সবই হয়, default হিসেবে প্রতি ৭ দিনে, schedule বদলানো যায় (লেসন ৭.৪)। - Lambda function দিয়ে rotation: বাকি সব secret-এর জন্য। RDS আর Aurora-র engine (MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, Db2), Redshift, DocumentDB আর ElastiCache-এর জন্য AWS function-এর template দেয়; অন্য কিছুর জন্য (যেমন third-party API key) generic template থেকে নিজে function লেখো।
একটা rotation function-কে চারবার ডাকা হয়, প্রতিটা ধাপে একবার, আর application-কে নিরাপদ রাখতে সে staging label ব্যবহার করে:
createSecret
নতুন একটা password বানাও আর সেটা
AWSPENDINGlabel দিয়ে নতুন version হিসেবে রাখো।AWSPENDINGকেউ পড়ে না, তাই কোনো application এখনো এটা ব্যবহার করে না।setSecret
Database-এ (বা service-এ) login করে credential বদলে
AWSPENDING-এর value করে দাও।testSecret
AWSPENDING-এর value দিয়ে login করে প্রমাণ করো যে সেটা কাজ করে।finishSecret
AWSCURRENTনতুন version-এ সরিয়ে দাও। Secrets Manager পুরোনোটার গায়ে বসায়AWSPREVIOUS, অর্থাৎ শেষ ভালো value।
কোনো ধাপ ব্যর্থ হলে AWSCURRENT সরেনি, তাই application পুরোনো, এখনো চালু credential-ই রাখে; Secrets Manager window-এর মধ্যে আবার চেষ্টা করে আর ব্যর্থতাটা CloudTrail-এ লেখে, যেটা একটা EventBridge rule দিয়ে alert বানানো যায়।
Database user-এর জন্য দুটো rotation কৌশল:
- Single user: একটাই user, তার password জায়গায় বসেই বদলায়। সহজ; কিন্তু
setSecret-এর পর থেকে application নিজের কপি refresh করা পর্যন্ত, পুরোনো password দিয়ে নতুন login ব্যর্থ হয়। বেশিরভাগ application-এর জন্য চলে, যারা secret আবার পড়ে retry করে। - Alternating users: দুটো user (
app_userআরapp_user_clone) পালা করে কাজ করে। প্রতিটা rotation সেই user-কে বদলায়, যে এখন current না, তাই application-এর হাতে থাকা credential পরের rotation পর্যন্ত বৈধ থাকে। Password বদলানোর জন্য function-এর আলাদা একটা admin secret লাগে। Availability-র জন্য সবচেয়ে ভালো।
Secret rotation, label ধরে ধরে
Shop-এর orders database-এর user প্রতি ৩০ দিনে rotate হয়। Secret-এর version আর তাদের staging label, database কোন password মানছে, আর application কী করছে, ধাপে ধাপে দেখো।
পরিস্থিতি
চারটা ধাপ: createSecret, setSecret, testSecret, finishSecret। AWSCURRENT label সরে একদম শেষে।
কে কাজ করছে
এখনো কেউ না
Database মানছে
password A
Application
password A দিয়ে login করে
Secret-এর version আর label
v1 · password A
০ দিন: secret-এর একটাই version, v1, label AWSCURRENT। অন্য label না চাইলে GetSecretValue AWSCURRENT-ই ফেরত দেয়, তাই application password A ব্যবহার করছে।
#Application থেকে secret ব্যবহার
পথটা সবসময় একই: application-এর IAM role GetSecretValue ডাকে, Secrets Manager IAM আর secret-এর resource policy দেখে, KMS decrypt করে, value TLS দিয়ে ফেরত আসে। বাস্তবে যেগুলো জরুরি:
- Cache। চালু হওয়ার সময় secret পড়ো, কয়েক মিনিট পরপর refresh করো, আর authentication error দিয়ে login ব্যর্থ হলে আবার পড়ো (rotation-এর ঠিক পরের মুহূর্তটা এতে ঢাকা পড়ে)। AWS SDK-তে caching client আছে; Lambda-র জন্য AWS Parameters and Secrets Lambda Extension এই কাজ করে; EC2, container আর on-premises-এ করে Secrets Manager Agent (২০২৪)।
BatchGetSecretValueএক call-এ ২০টা পর্যন্ত secret পড়ে। - Network। Secrets Manager-এ পৌঁছাতে হয় একটা public Regional endpoint-এ। Private subnet-এর কোনো function বা instance-এর লাগবে Secrets Manager-এর একটা interface VPC endpoint (private DNS থাকলে সাধারণ নামটাই চলে) বা একটা NAT gateway; না থাকলে call শুধু ঝুলে থাকে, timeout না হওয়া পর্যন্ত (লেসন ১৫.৩, লেসন ২২.২)। একটা rotation function-এর দুটো পথ লাগে: Secrets Manager পর্যন্ত, আর database-এর port পর্যন্ত।
- Container। ECS task definition-এর
secretsঅংশে একটা Secrets Manager secret বা একটা Parameter Store parameter-এর নাম লেখা যায়, আর task চালু হওয়ার সময় ECS value-টা environment variable হিসেবে ঢুকিয়ে দেয় (লেসন ১৪.২); EKS ব্যবহার করে Secrets Store CSI driver। ঢুকিয়ে দেওয়া value secret rotate হলে বদলায় না, তাই task আবার চালু করতে হয়, নয়তো app-কে নিজেই secret পড়তে হয়। - RDS Proxy database-এর credential নিজেই Secrets Manager থেকে পড়ে আর rotation টের পেয়ে যায়, তাই একটা Lambda function-এর proxy পর্যন্ত শুধু IAM authentication লাগে (লেসন ৭.৪)।
- CloudFormation-এর dynamic reference secret-কে template-এর বাইরে রাখে (লেসন ২৫.১): secret-এর জন্য
{{resolve:secretsmanager:prod/shop/orders-db:SecretString:password}}, String parameter-এর জন্য{{resolve:ssm:/shop/prod/db_url}}, আর SecureString-এর জন্য{{resolve:ssm-secure:/shop/prod/db_password}}, যেটা শুধু কিছু resource property মানে।AWS::RDS::DBCluster-এর মতো resource সোজাManageMasterUserPassword: true-ও দিতে পারে।
একটা application secret পড়ে
Shop-এর order function আর তার rotation function চলে private subnet-এ, কোনো NAT gateway নেই। Secrets Manager-এ পৌঁছানো হয় একটা interface VPC endpoint দিয়ে।
পরিস্থিতি
একটা GetSecretValue call, একবার KMS decrypt, তারপর database-এ login। Value cache-এ থাকে, প্রতি request-এ আনা হয় না।
নতুন একটা Lambda environment চালু হয়ে prod/shop/orders-db secret চায়। Private DNS-এর কারণে Secrets Manager-এর সাধারণ নামটাই endpoint-এর private IP-তে resolve হয়, তাই code বদলাতে হয় না।
#অন্য account থেকে access
একটা secret-এর গায়ে resource policy বসিয়ে অন্য account-এর কোনো principal-কে অনুমতি দেওয়া যায়, যেমন account 444455556666-এর একটা Lambda role account 111122223333-এর prod/shop/orders-db পড়বে। তিনটা জায়গাতেই অনুমতি থাকতে হবে:
- Secret-এর resource policy অন্য account-এর role-কে
secretsmanager:GetSecretValueদেয়। - Secret encrypt করা একটা customer managed key দিয়ে, যার key policy ওই role-কে
kms:Decryptদেয়। AWS managed keyaws/secretsmanagerঅন্য account থেকে ব্যবহার করা যায় না, তাই ওই key দিয়ে encrypt করা secret share করা যায় না। - Role-এর নিজের IAM policy ওই ARN-গুলোর ওপর দুটো action-ই দেয়।
Parameter Store-এ resource policy নেই। Advanced parameter অন্য account-এর সাথে AWS Resource Access Manager দিয়ে share করা যায় (শুধু পড়া, পুরো ARN দিয়ে), কিন্তু পরীক্ষায় cross-account secret-এর উত্তর হলো resource policy-সহ Secrets Manager।
#Multi-Region secret
যে application দুটো Region-এ চলে, যেমন active-active, বা Aurora global database-এর ওপর disaster recovery-র জন্য একটা warm standby (লেসন ৭.৩), তার দুই জায়গাতেই একই credential লাগে। Multi-Region secret:
- Secret বানাও একটা primary Region-এ, তারপর replica Region যোগ করো। Secrets Manager encrypted value আর তার metadata (tag, resource policy) কপি করে, আর replica-গুলোকে primary-র সাথে sync রাখে।
- Replica-র নাম একই; তার ARN-এ শুধু Region-টা আলাদা। তাই প্রতিটা Region-এর code নিজের Region-এর endpoint থেকে একই নাম পড়ে, latency কম, আর অন্য Region-এর ওপর নির্ভরতা নেই।
- প্রতিটা replica encrypt হয় তার নিজের Region-এর একটা KMS key দিয়ে (সেখানকার
aws/secretsmanager, বা তোমার বলে দেওয়া customer managed key, যেমন লেসন ২১.২-এর একটা multi-Region key)। - Rotation চলে শুধু primary-তে; নতুন value প্রতিটা replica-তে পৌঁছে যায়।
- দুর্যোগের সময় একটা replica-কে standalone secret-এ promote করা যায়: তখন সেটা ওই Region-এর একটা সাধারণ secret, যেটা বদলানো, rotate করা আর পরে আবার replicate করা যায়।
Multi-Region secret
একটা telco তার self-care app চালায় Singapore-এ, আর Mumbai-তে একটা warm standby রাখে, Aurora global database-এর ওপর। দুই Region-এই একই database password লাগে।
পরিস্থিতি
একটা secret, অন্য Region-এ replicate করা, Secrets Manager নিজেই sync রাখে।
Secret বানানো হয় Singapore-এ, replica Region হিসেবে Mumbai দিয়ে। Replica-র নাম একই, আর তার ARN-এ শুধু Region-টা আলাদা।
#Parameter Store, নাকি Secrets Manager?
| SSM Parameter Store | AWS Secrets Manager | |
|---|---|---|
| কীসের জন্য বানানো | Configuration আর সাধারণ secret | Secret (credential, API key) |
| Encryption | ঐচ্ছিক (KMS দিয়ে SecureString) | সবসময়, KMS দিয়ে |
| Automatic rotation | নেই | আছে (managed, বা Lambda function) |
| মেয়াদ আর বদলের সতর্কতা | Parameter policy (Advanced) | এমন policy নেই; বদলে আছে rotation |
| Value-র সর্বোচ্চ মাপ | 4 KB (Standard), 8 KB (Advanced) | 64 KB |
| Region প্রতি সর্বোচ্চ সংখ্যা | ১০,০০০ (Standard), ১,০০,০০০ (Advanced) | ৫,০০,০০০ |
| খরচ | Standard: রাখা আর সাধারণ throughput ফ্রি; Advanced: প্রতিটা মাসে ০.০৫ USD | প্রতি secret মাসে ০.৪০ USD + প্রতি ১০,০০০ call-এ ০.০৫ USD |
Hierarchy আর GetParametersByPath | আছে | Folder নেই (নামে slash থাকতে পারে); BatchGetSecretValue |
| Cross-account access | AWS Resource Access Manager দিয়ে Advanced parameter share | Secret-এর resource policy + customer managed key |
| Cross-Region replication | নেই | Multi-Region secret |
| Database-এর সাথে নিজস্ব যোগ | নেই | RDS, Aurora, Redshift, DocumentDB, RDS Proxy |
| AWS-এর public ডেটা | /aws/service/-এর নিচে AMI ID আর আরও কিছু | নেই |
| CloudFormation dynamic reference | ssm, ssm-secure | secretsmanager |
একটা চেনা, বুদ্ধিমান ভাগাভাগি হলো দুটোই ব্যবহার করা: configuration আর সস্তা, স্থির secret Parameter Store-এ, যে credential rotate করতেই হবে সেগুলো Secrets Manager-এ, আর একই code দিয়ে সব Parameter Store-এর মাধ্যমে পড়তে চাইলে /aws/reference/secretsmanager/ path।
Parameter Store, নাকি Secrets Manager?
প্রতিটা card একটা scenario-র চাহিদা। সবচেয়ে মানানসই service-টা বাছো, তারপর কারণটা পড়ো।
1.২০০টা feature flag আর dev ও prod-এর database URL রাখতে হবে, যত কম খরচে সম্ভব।
2.Compliance-এর জন্য RDS for PostgreSQL-এর password প্রতি ৩০ দিনে আপনা-আপনি rotate করতে হবে।
3.Launch template-কে প্রতিটা Region-এ সবসময় সবচেয়ে নতুন Amazon Linux 2023 AMI নিতে হবে।
4.Partner-এর credential-এর 30 KB-র একটা bundle একটা value হিসেবে রাখতে হবে।
5.Disaster recovery-র জন্য একই database credential Singapore আর Mumbai দুই জায়গায় থাকতে হবে, আর আপনা-আপনি sync থাকতে হবে।
6.একটা অস্থায়ী courier token ৩০ দিন পরে মুছে যেতে হবে, ৭ দিন আগে একটা email-সহ, কোনো code না লিখে।
7.RDS Proxy-কে database-এ login করতে হবে, application-এ কোনো credential না রেখে।
8.একটা SMS gateway-র API key encrypt করে রাখতে হবে। কখনো rotate করার দরকার নেই, আর বাজেট কম।
9.6 KB-র একটা application configuration file, গোপন কিছু না, এক জায়গায় রাখতে হবে।
10.Account 444455556666-এর একটা Lambda function-কে account 111122223333-এর একটা database password পড়তে হবে, জমা রাখা value-র ওপর resource policy দিয়ে।
প্রথমবারেই ঠিক: 0 / 0 (10)
#কোথায় কোথায় গোলমাল হয়
ssm:GetParameterবাsecretsmanager:GetSecretValue-এর অনুমতি থাকার পরওAccessDeniedException: value-টা customer managed key দিয়ে encrypt করা, আর role-এর সেই key-তেkms:Decryptনেই (বা key policy তাকে বিশ্বাস করে না)। KMS-এর অনুমতি যোগ করো।- Dev server production-এর value পড়তে পারছে: IAM policy-তে
parameter/shop/dev/*-এর বদলে লেখাparameter/*। Resource ARN ঠিক করো; production-এর জন্য আলাদা account-এর কথাও ভাবো (লেসন ২০.১)। SecureStringফেরত আসছে লম্বা একটা encrypted লেখা হয়ে: call-এ decryption চাওয়া হয়নি (--with-decryption/WithDecryption=true)।- 5 KB-র value-তে
ValidationException: parameter-টা Standard (4 KB)। Advanced নাও, আর 8 KB-র বড় হলে Secrets Manager বা S3। - ভিড়ের সময় Parameter Store থেকে
ThrottlingException: default সেকেন্ডে ৪০টা, সব get call মিলিয়ে। Value cache করো, Lambda environment-এ একবার পড়ো, নয়তো higher throughput চালু করো (টাকা লাগে)। - একটা parameter উধাও: Expiration policy সেটা মুছে দিয়েছে। আগে সতর্ক হতে ExpirationNotification রাখো, তারিখের আগেই নতুন করো।
- নতুন policy যোগ করার পর পুরোনোগুলো নেই: নতুন policy-র তালিকা পুরোনো তালিকার জায়গা নেয়। প্রতিবার সব policy পাঠাও।
- Rotation timeout দিয়ে ব্যর্থ: rotation function database-এর VPC-তে নেই, database port-এ তার security group-এর অনুমতি নেই, বা Secrets Manager পর্যন্ত যাওয়ার endpoint বা NAT gateway নেই।
AWSCURRENTপুরোনো value-তেই থাকে, তাই application চলে, কিন্তু password rotate হয় না। EventBridge দিয়ে ব্যর্থ rotation-এর alert রাখো। - সফল rotation-এর ক’দিন পরে “password authentication failed”: application একবার secret পড়ে চিরকাল cache করে রেখেছিল, আর টের পেল পরের নতুন connection-এ (একটা failover, pool আবার চালু)। সময়সীমা দিয়ে cache রাখো, authentication error হলে আবার পড়ো, বা RDS Proxy নয়তো alternating users ব্যবহার করো।
- ECS task এখনো পুরোনো password ব্যবহার করছে: environment variable হিসেবে ঢোকানো value পড়া হয় শুধু task চালুর সময়। Rotation-এর পর task আবার চালু করো, বা app-কে দিয়ে secret পড়াও।
- দুর্যোগের সময় standby Region login করতে পারছে না: secret ছিল শুধু বন্ধ হয়ে যাওয়া Region-এ। App যেসব Region-এ চলে, সবখানে replicate করো।
- অন্য account share করা secret পড়তে পারছে না: secret encrypt করা
aws/secretsmanagerদিয়ে, বা key policy, resource policy কিংবা caller-এর IAM policy-র কোনো একটা নেই। তিনটাতেই অনুমতি লাগবে। - Secrets Manager-এর অবাক করা bill: শত শত সাধারণ setting secret হিসেবে রাখা, বা প্রতিটা request-এ secret পড়া। Configuration Parameter Store-এ সরাও, আর পড়াগুলো cache করো।
#System design-এ কোথায় বসে
যেসব নকশা বারবার দেখবে:
- Twelve-factor configuration: build-এর ভেতরে কোনো configuration না; একই AMI বা container image dev আর prod-এ চলে, আর চালু হওয়ার সময়
/app/<env>/...পড়ে নেয়। - Golden AMI pipeline: একটা EC2 Image Builder pipeline সবচেয়ে নতুন অনুমোদিত AMI ID একটা parameter-এ লেখে; launch template আর Auto Scaling group সেই parameter-এর দিকে তাকায়।
- Serverless-এ ডেটা access: Lambda → RDS Proxy (IAM auth) → database, database-এর credential Secrets Manager-এ (লেসন ১৫.৩)।
- একাধিক account: secret থাকে workload account-এ; একটা কেন্দ্রীয় security account organization trail দিয়ে পড়াগুলো audit করে।
- Disaster recovery: application-এর লাগে এমন প্রতিটা secret recovery Region-এ replicate করা, আর runbook-এ সেটা promote করার ধাপও থাকে।
#নিজে করে দেখো
Command-গুলো AWS CLI v2 দিয়ে, ap-southeast-1-এ। প্রতিটা secret মাসে ০.৪০ USD আর Advanced parameter মাসে ০.০৫ USD, তাই শেষে মুছে দিয়ো। নিচের সব value বানানো উদাহরণ।
# 1. Plain and encrypted parameters in a hierarchy (Standard tier, no charge)
aws ssm put-parameter --name /shop/dev/db_url --type String --value "shop-dev.example:5432"
aws ssm put-parameter --name /shop/dev/db_password --type SecureString --value "EXAMPLE-dev-pass"
aws ssm put-parameter --name /shop/dev/payment/mode --type String --value sandbox
# 2. Read the whole dev folder, decrypted
aws ssm get-parameters-by-path --path /shop/dev --recursive --with-decryption \
--query 'Parameters[].[Name,Type,Value]' --output table
# -------------------------------------------------------------
# | GetParametersByPath |
# +---------------------------+--------------+----------------+
# | /shop/dev/db_password | SecureString| EXAMPLE-dev-pass
# | /shop/dev/db_url | String | shop-dev.example:5432
# | /shop/dev/payment/mode | String | sandbox |
# +---------------------------+--------------+----------------+
# 3. The newest Amazon Linux 2023 AMI from a public parameter
aws ssm get-parameter --name /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64 \
--query Parameter.Value --output text
# ami-0abcdef1234567890
# 4. An Advanced parameter with an expiry, a warning 15 days before, and a no-change alert
aws ssm put-parameter --name /shop/prod/courier/token --type SecureString --tier Advanced \
--value "EXAMPLE-courier-token" \
--policies '[{"Type":"Expiration","Version":"1.0","Attributes":{"Timestamp":"2026-12-01T00:00:00.000Z"}},
{"Type":"ExpirationNotification","Version":"1.0","Attributes":{"Before":"15","Unit":"Days"}},
{"Type":"NoChangeNotification","Version":"1.0","Attributes":{"After":"20","Unit":"Days"}}]'
aws ssm describe-parameters --parameter-filters "Key=Name,Values=/shop/prod/courier/token" \
--query 'Parameters[0].[Tier,Policies[].PolicyType]'
# [ "Advanced", [ "Expiration", "ExpirationNotification", "NoChangeNotification" ] ]
# 5. A secret with a generated password, and a 30-day rotation using an existing rotation function
PW=$(aws secretsmanager get-random-password --password-length 32 --exclude-punctuation \
--query RandomPassword --output text)
aws secretsmanager create-secret --name prod/shop/orders-db \
--secret-string "{\"engine\":\"postgres\",\"host\":\"orders.example\",\"port\":5432,\"username\":\"app_user\",\"password\":\"$PW\"}"
aws secretsmanager rotate-secret --secret-id prod/shop/orders-db \
--rotation-lambda-arn arn:aws:lambda:ap-southeast-1:111122223333:function:shop-rotate-postgres \
--rotation-rules '{"ScheduleExpression":"rate(30 days)","Duration":"3h"}'
# 6. See the versions and their staging labels after a rotation
aws secretsmanager describe-secret --secret-id prod/shop/orders-db --query VersionIdsToStages
# { "a1b2c3d4-1111-2222-3333-444455556666": [ "AWSPREVIOUS" ],
# "e5f6a7b8-7777-8888-9999-000011112222": [ "AWSCURRENT" ] }
# 7. Read the current value, and the same secret through Parameter Store
aws secretsmanager get-secret-value --secret-id prod/shop/orders-db --query SecretString --output text
aws ssm get-parameter --name /aws/reference/secretsmanager/prod/shop/orders-db --with-decryption \
--query Parameter.Value --output text
# 8. Replicate to Mumbai, and promote the replica (run in the replica Region) during a DR test
aws secretsmanager replicate-secret-to-regions --secret-id prod/shop/orders-db \
--add-replica-regions Region=ap-south-1
aws secretsmanager stop-replication-to-replica --secret-id prod/shop/orders-db --region ap-south-1
# 9. An RDS instance whose master password RDS manages in Secrets Manager
aws rds create-db-instance --db-instance-identifier orders-demo --engine postgres \
--db-instance-class db.t4g.micro --allocated-storage 20 \
--master-username admin_user --manage-master-user-password
# 10. Clean up
aws ssm delete-parameters --names /shop/dev/db_url /shop/dev/db_password /shop/dev/payment/mode /shop/prod/courier/token
aws secretsmanager delete-secret --secret-id prod/shop/orders-db --force-delete-without-recovery --region ap-south-1
aws secretsmanager delete-secret --secret-id prod/shop/orders-db --recovery-window-in-days 7
aws rds delete-db-instance --db-instance-identifier orders-demo --skip-final-snapshot
Console-এও করে দেখো: Parameter Store খুলে Create parameter বাছো, আর দেখো Advanced tier কী কী খুলে দেয় (parameter policy)। তারপর একটা Secrets Manager secret খুলে Rotation-এ যাও, schedule expression আর rotation window দেখো।
#সারসংক্ষেপ
মূল কথা
- Configuration আর secret রাখো code আর AMI-র বাইরে, এমন service-এ যেখানে প্রতিটা value-র জন্য IAM, KMS encryption আর CloudTrail audit আছে।
- SSM Parameter Store:
String,StringList,SecureString(KMS); version; hierarchy (/shop/prod/db_url), সাথেparameter/shop/dev/*-এ IAM আরGetParametersByPath;/aws/service/-এর নিচে AMI-র public parameter;/aws/reference/secretsmanager/দিয়ে secret পড়া। - Tier: Standard ১০,০০০ parameter, 4 KB, ফ্রি; Advanced ১,০০,০০০, 8 KB, মাসে ০.০৫ USD, parameter policy, share; নামানো যায় না। Throughput: default সেকেন্ডে ৪০, higher throughput-এ টাকা লাগে।
- Parameter policy (শুধু Advanced): Expiration (মুছে দেয়), ExpirationNotification আর NoChangeNotification (EventBridge event)।
- Secrets Manager: 64 KB পর্যন্ত secret, সবসময় KMS-এ encrypt, প্রতি secret মাসে ০.৪০ USD + API call; secret-এর automatic rotation (KMS key-এর না), প্রতি ৪ ঘণ্টা থেকে; RDS, Aurora, Redshift, DocumentDB-তে managed rotation, বাকিদের জন্য Lambda function:
createSecret→setSecret→testSecret→finishSecret, আর labelAWSPENDING→AWSCURRENT→AWSPREVIOUS। - Rotation function-এর network পথ লাগে database পর্যন্ত আর Secrets Manager পর্যন্ত (endpoint বা NAT); rotation ব্যর্থ হলে
AWSCURRENTযেখানে ছিল সেখানেই থাকে। - Cross-account: secret-এর resource policy + customer managed key। Multi-Region secret: sync রাখা replica, একই নাম, নিজের Region-এর KMS key, DR-এ standalone-এ promote।
- পরীক্ষার keyword: কম খরচের configuration, hierarchy, 5–8 KB, মেয়াদের policy → Parameter Store; automatic rotation, RDS-এর সাথে যোগ, multi-Region sync, cross-account secret → Secrets Manager।
আগে নিজে উত্তর দাও, তারপর ব্যাখ্যাটা পড়ো। ঠিক হলেও পড়ো, কারণ ভুল Option-গুলো কেন ভুল, সেটাও ওখানে আছে।
নিজেকে যাচাই করোপ্রশ্ন
Parameter Store-এর একটা SecureString parameter কীভাবে সুরক্ষিত থাকে?
নিজেকে যাচাই করোপ্রশ্ন
নিচের কোনটা Parameter Store-এর parameter type না?
নিজেকে যাচাই করোপ্রশ্ন
Parameter Store-এর Standard tier-এর বর্ণনা কোনটা?
নিজেকে যাচাই করোপ্রশ্ন
একটা application-এর 6 KB-র একটা JSON configuration file Parameter Store-এ রাখতে হবে। File-টা গোপন কিছু না। Architect কী করবে?
নিজেকে যাচাই করোপ্রশ্ন
Development আর production-এর EC2 instance Parameter Store থেকে credential পড়ে। Development instance কখনো production-এর credential পড়তে পারবে না। সবচেয়ে সহজ নকশা কোনটা?
নিজেকে যাচাই করোপ্রশ্ন
GetParametersByPath কী করে?
নিজেকে যাচাই করোপ্রশ্ন
Parameter Store-এ রাখা partner-এর একটা API token ৩০ দিন পরে আপনা-আপনি মুছে যেতে হবে, আর ১৫ দিন আগে team-কে email যেতে হবে, কোনো custom code না লিখে। কী ব্যবহার করবে?
নিজেকে যাচাই করোপ্রশ্ন
Parameter Store-এ রাখা অনুমোদিত golden AMI ID ৬০ দিন ধরে হালনাগাদ না হলে security team একটা alert চায়। কোন বৈশিষ্ট্য মানানসই?
নিজেকে যাচাই করোপ্রশ্ন
Compliance-এর নিয়ম: একটা Amazon RDS for MySQL database-এর password প্রতি ৩০ দিনে আপনা-আপনি rotate হবে, application-এর কোনো downtime ছাড়া। কোন service-এ রাখবে?
নিজেকে যাচাই করোপ্রশ্ন
Secrets Manager-এর rotation function তার চারটা ধাপ কোন ক্রমে চালায়?
নিজেকে যাচাই করোপ্রশ্ন
সফল rotation-এর পর, rotation-এর আগে যে version current ছিল, তার গায়ে কোন staging label থাকে?
নিজেকে যাচাই করোপ্রশ্ন
একটা rotation Lambda function private subnet-এ চলে, কোনো NAT gateway নেই। নতুন version বানানোর আগেই function timeout হয়ে rotation ব্যর্থ হয়। CloudWatch Logs বলছে function চালু হয়েছিল। সবচেয়ে সম্ভাব্য সমাধান কোনটা?
নিজেকে যাচাই করোপ্রশ্ন
Rotation চলার সময় একটা security group rule-এর কারণে setSecret database-এ connect করতে পারে না। Application কী দেখে?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানির database-এর read replica দুটো Region-এ চলে, আর তারা চায় database credential দুই Region-এই থাকুক আর আপনা-আপনি sync থাকুক। কী ব্যবহার করবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা multi-Region secret-এর primary Region-এ লম্বা outage চলছে। Standby Region নিজে নিজে secret বদলাতে আর rotate করতে পারবে কীভাবে?
নিজেকে যাচাই করোপ্রশ্ন
Notes Secrets Manager-এর সবচেয়ে বড় গুণকে বলেছে automatic key rotation। Secrets Manager আসলে কী rotate করে?
নিজেকে যাচাই করোপ্রশ্ন
Secrets Manager সবচেয়ে কম কত সময় পরপর rotation করতে দেয়?
নিজেকে যাচাই করোপ্রশ্ন
একটা application-এর ২০০টা গোপন নয় এমন configuration value আছে (URL, feature flag, bucket-এর নাম), কালেভদ্রে বদলায়। সবচেয়ে কম খরচে কোথায় রাখবে?
নিজেকে যাচাই করোপ্রশ্ন
নতুন একটা Lambda role-এর একটা secret-এ secretsmanager:GetSecretValue আছে, কিন্তু প্রতিটা call KMS-এর কথা বলা AccessDeniedException দিয়ে ব্যর্থ। অন্য role-রা ঠিকই পড়ছে। কী নেই?
নিজেকে যাচাই করোপ্রশ্ন
Account 444455556666-এর একটা Lambda function-কে account 111122223333-এর একটা database secret পড়তে হবে। কোন নকশা কাজ করবে?
নিজেকে যাচাই করোপ্রশ্ন
যে code আগে থেকেই ssm:GetParameter দিয়ে configuration পড়ে, তাকে Secrets Manager-এ রাখা একটা database password-ও পড়তে হবে, নতুন Secrets Manager client যোগ না করে। কী করা যায়?
নিজেকে যাচাই করোপ্রশ্ন
একটা launch template-কে প্রতিটা Region-এ সবসময় সবচেয়ে নতুন Amazon Linux 2023 AMI থেকে instance চালু করতে হবে, template না বদলে। কীসের reference দেবে?
নিজেকে যাচাই করোপ্রশ্ন
Flash sale-এর সময় প্রতিটা invocation-এ GetParameter ডাকা Lambda function-গুলো ThrottlingException পাচ্ছে। প্রথম সবচেয়ে ভালো সমাধান কোনটা?
নিজেকে যাচাই করোপ্রশ্ন
একটা team ভুল করে একটা parameter Advanced tier-এ তুলে ফেলেছে, আর এর জন্য টাকা দেওয়া বন্ধ করতে চায়। কী করবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা RDS for PostgreSQL instance বানানো হয়েছে master user-এর password Secrets Manager-এ সামলানোর option চালু করে। কোন কথাটা ঠিক?
নিজেকে যাচাই করোপ্রশ্ন
AWS Secrets Manager নিয়ে কোন দুটো কথা ঠিক?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
কোন দুটো সুবিধার জন্য Parameter Store-এর parameter-কে Advanced tier-এ থাকতে হয়?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
Secrets Manager password rotate করার (single user কৌশল) ঠিক পরেই একটা application মাঝে মাঝে database-এ login করতে পারে না। কোন দুটো বদল এটা ঠেকায়?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
কোন দুটো CloudFormation dynamic reference database password-কে template-এর বাইরে রাখে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
Secrets Manager-এর replica secret নিয়ে কোন দুটো কথা ঠিক?
বেছে নাও ২