AWS CLI Secrets Manager आणि SSM Parameter Store Commands
Passwords code बाहेर: rotation सह secrets साठी Secrets Manager, config साठी Parameter Store, आणि SSH शिवाय commands व shells साठी SSM.
या chapter मध्ये तुम्ही काय शिकाल
- Secret बनवा, वाचा
- Update, rotate
- Parameter Store values
- Run Command
- Session Manager
1. मोठं चित्र: bank locker
हे का लागतं?
दागिने bank locker मध्ये, गादीखाली नाही; bank प्रत्येक visit नोंदवते. Secrets Manager आणि Parameter Store passwords, settings चे lockers; कोण उघडणार ते IAM ठरवतो.
हे काय आहे?
Secrets aws secretsmanager. Parameters, Run Command, sessions aws ssm.
कसं करायचं (step by step)
2. Secret बनवा आणि वाचा
हे का लागतं?
Code मधला DB password Git मध्ये जातो, सगळ्यांना दिसतो.
हे काय आहे?
create-secret KMS ने encrypt करून string/JSON ठेवतो. get-secret-value current version देतो.
कसं करायचं (step by step)
- File मधून create.
printf '{"user":"app","pass":"S3cr3t!"}' > db.json
aws secretsmanager create-secret --name cli/db --secret-string file://db.json --query ARN --output text
rm db.json
अपेक्षित output:
arn:aws:secretsmanager:ap-south-1:111122223333:secret:cli/db-AbCdEf
- एक field वाचा.
aws secretsmanager get-secret-value --secret-id cli/db --query SecretString --output text | jq -r .user
अपेक्षित output:
app
3. Update आणि rotate
हे का लागतं?
App न मोडता passwords नियमित बदलायला हवेत.
हे काय आहे?
put-secret-value नवीन AWSCURRENT version. rotate-secret schedule वर Lambda call (RDS साठी तयार).
कसं करायचं (step by step)
- नवीन value.
aws secretsmanager put-secret-value --secret-id cli/db --secret-string '{"user":"app","pass":"N3w!"}' --query VersionStages --output text
अपेक्षित output:
AWSCURRENT
- 30 दिवस rotation.
aws secretsmanager rotate-secret --secret-id cli/db --rotation-lambda-arn arn:aws:lambda:ap-south-1:111122223333:function:rotate-db --rotation-rules AutomaticallyAfterDays=30 --query VersionId --output text
अपेक्षित output:
7e8f9a0b-...
4. Parameter Store
हे का लागतं?
API URL सारख्या settings dev, prod साठी वेगळ्या; काही encrypt हव्यात.
हे काय आहे?
put-parameter /app/dev/url सारख्या path मध्ये String, StringList, SecureString. get-parameters-by-path पूर्ण folder. Standard free.
कसं करायचं (step by step)
- Values ठेवा.
aws ssm put-parameter --name /cli/dev/url --type String --value https://api.dev.example.com
aws ssm put-parameter --name /cli/dev/key --type SecureString --value abc123 --query Version --output text
अपेक्षित output:
1
- Folder decrypt करून.
aws ssm get-parameters-by-path --path /cli/dev --with-decryption --query "Parameters[].[Name,Value]" --output text
अपेक्षित output:
/cli/dev/key abc123
/cli/dev/url https://api.dev.example.com
5. Run Command आणि Session Manager
हे का लागतं?
50 servers patch करायचे किंवा shell हवा, port 22 बंद ठेवून.
हे काय आहे?
SSM agent आणि AmazonSSMManagedInstanceCore असलेले instances send-command घेतात. start-session AWS मधून shell (Session Manager plugin लागतो).
कसं करायचं (step by step)
- Managed instances.
aws ssm describe-instance-information --query "InstanceInformationList[].[InstanceId,PingStatus]" --output text
अपेक्षित output:
i-0abc123def4567890 Online
- Tagged servers वर command.
C=$(aws ssm send-command --document-name AWS-RunShellScript --targets Key=tag:env,Values=dev --parameters commands="uptime" --query Command.CommandId --output text)
sleep 5; aws ssm list-command-invocations --command-id $C --details --query "CommandInvocations[].CommandPlugins[0].Output" --output text
अपेक्षित output:
06:10:01 up 3 days, 2:14, 0 users, load average: 0.01
- Shell उघडा.
aws ssm start-session --target i-0abc123def4567890
अपेक्षित output:
Starting session with SessionId: you-0a1b2c3d
sh-5.2$
6. हीच action Python, Node.js, Java, Go, .NET आणि PHP मध्ये
हे का लागतं?
Scripts CLI मध्ये सुरू होतात. Apps तोच API SDK मधून call करतात. दोन्ही माहीत असले की test केलेली command थेट code मध्ये नेता येते.
हे काय आहे?
प्रत्येक CLI command म्हणजे एक API call. उदा. aws secretsmanager get-secret-value --secret-id cli/db म्हणजे Get secret API.
कसं करायचं (step by step)
हीच action (Secret वाचा) code मधून. प्रत्येक SDK CLI सारखेच profile, region आणि credentials वाचतो.
| Stack | Code |
|---|---|
| Python (boto3) | boto3.client("secretsmanager").get_secret_value(SecretId="cli/db")["SecretString"] |
| Node.js (v3) | await sm.send(new GetSecretValueCommand({SecretId:"cli/db"})); |
| Java (v2) | sm.getSecretValue(r -> r.secretId("cli/db")).secretString(); |
| Go (v2) | c.GetSecretValue(ctx, &secretsmanager.GetSecretValueInput{SecretId: aws.String("cli/db")}) |
| .NET | await sm.GetSecretValueAsync(new GetSecretValueRequest{SecretId="cli/db"}); |
| PHP | $sm->getSecretValue(["SecretId"=>"cli/db"])["SecretString"]; |
7. काहीही खर्च चालू राहू नये म्हणून cleanup
हे का लागतं?
चालू ठेवलेले lab resources पैसे खातात आणि security risk बनतात.
हे काय आहे?
उलट्या क्रमाने delete करा: आधी children, मग parents.
कसं करायचं (step by step)
- Secret delete (7 दिवस recovery).
aws secretsmanager delete-secret --secret-id cli/db --recovery-window-in-days 7 --query DeletionDate --output text
अपेक्षित output:
2026-10-31T11:00:00+05:30
- Parameters delete.
aws ssm delete-parameters --names /cli/dev/url /cli/dev/key --query DeletedParameters --output text
अपेक्षित output:
/cli/dev/url /cli/dev/key
- Verify.
aws ssm get-parameters-by-path --path /cli/dev --query Parameters
अपेक्षित output:
[]
Ravindra Bagale's Tip
Secrets variable मध्ये वाचा, command line वर नाही; CI logs मध्ये print करू नका. --secret-string file:// वापरा म्हणजे history मध्ये value येत नाही.
8. मुलाखत प्रश्न आणि उत्तरं
प्र. Secrets Manager vs Parameter Store?
Rotation, cost vs free config.
प्र. SecureString काय?
KMS encrypted parameter.
प्र. SSH ऐवजी Session Manager का?
Port 22 नाही, keys नाहीत, logged.
प्र. SSM साठी instance ला काय?
Agent, network, role policy.
प्र. delete-secret undo?
Recovery window मध्ये restore-secret.
घरी करून बघा
- Parameter Store मध्ये DB URL, Secrets Manager मध्ये password ठेवून script मध्ये दोन्ही वाचा.
- send-command ने सर्व dev instances वर uptime.
थोडक्यात सांगायचं तर
- create-secret.
- get-secret-value.
- put-parameter SecureString.
- Tag ने send-command.
- start-session, SSH नाही.
सराव Tasks
Milan Furniture हा मिलान मधला फर्निचर व्यवसाय आहे. Giulia Rossi त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे EUR मध्ये मोजले जातात आणि AWS resources eu-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 11
सोपं Secret वाचा
का: Apps secret file मध्ये न ठेवता start-up ला वाचतात.
काय करायचं: milanfurniture/prod/db secret ची value मिळवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं SSH चा port
का: Security group rules ला योग्य port हवा.
काय करायचं: SSH साठी security group ने कोणता TCP port उघडावा?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं MySQL चा port
का: DB security group ने फक्त हा port app साठी उघडावा.
काय करायचं: Milan Furniture चं app RDS MySQL शी बोलतं. DB SG ने कोणता port allow करावा?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Decrypted parameter वाचा
का: --with-decryption शिवाय encrypted blob च दिसतो.
काय करायचं: /milanfurniture/prod/api-key वाचा व decrypt करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Encrypted parameter ठेवा
का: SecureString parameters KMS ने encrypt होतात.
काय करायचं: /milanfurniture/prod/api-key हा abc123 value सह SecureString म्हणून ठेवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम फक्त एक secret वाचा
का: प्रत्येक app ने फक्त स्वतःचं secret वाचावं.
काय करायचं: फक्त arn:aws:secretsmanager:eu-south-1:126154182628:secret:milanfurniture/prod/db-* वर secretsmanager:GetSecretValue allow करा.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
मध्यम Database password ठेवा
का: Secrets Manager secrets encrypt करतो व rotate करू शकतो; code मध्ये कधी नको.
काय करायचं: secret.json मधल्या value ने milanfurniture/prod/db secret बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम CloudFormation: web SG
का: फक्त 443 उघडल्याने server सुरक्षित.
काय करायचं: 0.0.0.0/0 कडून TCP 443 allow करणारा AWS::EC2::SecurityGroup. GroupDescription द्या.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
अवघड Path खालचे सगळे parameters वाचा
का: Path config गटात ठेवतो, एका call ने सगळं load.
काय करायचं: /milanfurniture/prod खालचे सगळे parameters, sub-paths सह, decrypted मिळवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Secret आत्ता rotate करा
का: Rotation password schedule ने किंवा हवं तेव्हा बदलतो.
काय करायचं: milanfurniture/prod/db secret चं rotation आत्ता सुरू करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Office बाहेरून access deny
का: aws:SourceIp सह explicit Deny इतर ठिकाणांहून keys वापर रोखतो.
काय करायचं: एक Deny statement: source IP 203.0.113.0/24 मध्ये नसेल तेव्हा * resources वर * actions deny.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.




अजून cards: Ravi Sir's Cards.