AWS CLI STS Commands: Assume Role आणि Session Tokens
STS short-lived keys देतो. CLI मधून तुम्ही कोण ते तपासा, roles assume करा, MFA वापरा आणि आपोआप role assume करणारे profiles बनवा.
या chapter मध्ये तुम्ही काय शिकाल
- get-caller-identity
- assume-role आणि keys export
- role_arn आणि source_profile profiles
- MFA session tokens
- Authorization error decode
1. मोठं चित्र: उसने keys
हे का लागतं?
Hotel checkout ला बंद होणारं room card देतं. STS 15 मिनिटं ते 12 तासांनी बंद होणाऱ्या keys देतो.
हे काय आहे?
Temporary credentials चे तीन भाग: AccessKeyId (ASIA ने सुरू), SecretAccessKey, SessionToken. तिन्ही लागतात.
कसं करायचं (step by step)
2. मी कोण?
हे का लागतं?
कोणत्याही बदलाआधी account आणि identity माहीत हवी.
हे काय आहे?
get-caller-identity ला permission लागत नाही, keys valid असतील तर नेहमी चालतो.
कसं करायचं (step by step)
- चालवा.
aws sts get-caller-identity
अपेक्षित output:
{ "UserId": "AIDA...", "Account": "111122223333", "Arn": "arn:aws:iam::111122223333:user/ravi" }
- फक्त account.
aws sts get-caller-identity --query Account --output text
अपेक्षित output:
111122223333
3. assume-role आणि keys export
हे का लागतं?
Admin rights दहा मिनिटांसाठी हवेत, कायमचे नाही.
हे काय आहे?
assume-role Credentials block देतो. तीन env variables म्हणून export करा.
कसं करायचं (step by step)
- Role assume.
aws sts assume-role --role-arn arn:aws:iam::111122223333:role/cli-admin --role-session-name ravi-cli --duration-seconds 900
अपेक्षित output:
{ "Credentials": { "AccessKeyId": "ASIA...", "SecretAccessKey": "...", "SessionToken": "IQoJ...", "Expiration": "2026-10-24T06:15:00Z" },
"AssumedRoleUser": { "Arn": "arn:aws:sts::111122223333:assumed-role/cli-admin/ravi-cli" } }
- एका line मध्ये export.
eval $(aws sts assume-role --role-arn arn:aws:iam::111122223333:role/cli-admin --role-session-name ravi-cli --query "Credentials.['export AWS_ACCESS_KEY_ID='+AccessKeyId,'AWS_SECRET_ACCESS_KEY='+SecretAccessKey,'AWS_SESSION_TOKEN='+SessionToken]" --output text)
अपेक्षित output:
(no output means success)
- सोपं: text output आणि read.
read AK SK ST <<< $(aws sts assume-role --role-arn arn:aws:iam::111122223333:role/cli-admin --role-session-name ravi-cli --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" --output text)
export AWS_ACCESS_KEY_ID=$AK AWS_SECRET_ACCESS_KEY=$SK AWS_SESSION_TOKEN=$ST
अपेक्षित output:
(no output means success)
- Verify.
aws sts get-caller-identity --query Arn --output text
अपेक्षित output:
arn:aws:sts::111122223333:assumed-role/cli-admin/ravi-cli
- परत स्वतः.
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
अपेक्षित output:
(no output means success)
4. Role profiles: स्वच्छ मार्ग
हे का लागतं?
हाताने keys export करणं slow, आणि expire होतात. Role profile ने CLI स्वतः assume आणि refresh करतो.
हे काय आहे?
~/.aws/config मध्ये role_arn आणि source_profile. MFA साठी mfa_serial. Vendor साठी external_id.
कसं करायचं (step by step)
- Profile add करा.
cat >> ~/.aws/config <<'J'
[profile prod-admin]
role_arn = arn:aws:iam::444455556666:role/cli-admin
source_profile = default
mfa_serial = arn:aws:iam::111122223333:mfa/ravi
duration_seconds = 3600
region = ap-south-1
J
अपेक्षित output:
(no output means success)
- वापरा.
aws s3 ls --profile prod-admin
अपेक्षित output:
Enter MFA code for arn:aws:iam::111122223333:mfa/ravi: 123456
2026-09-01 10:00:00 prod-logs
- Account बदलला verify.
aws sts get-caller-identity --profile prod-admin --query Account --output text
अपेक्षित output:
444455556666
5. MFA session tokens
हे का लागतं?
Policies धोकादायक actions साठी MFA मागतात. साध्या keys fail होतात.
हे काय आहे?
get-session-token --serial-number आणि --token-code सोबत, aws:MultiFactorAuthPresent true असलेल्या keys.
कसं करायचं (step by step)
- MFA device ARN.
aws iam list-mfa-devices --user-name ravi --query "MFADevices[0].SerialNumber" --output text
अपेक्षित output:
arn:aws:iam::111122223333:mfa/ravi
- Session token.
aws sts get-session-token --serial-number arn:aws:iam::111122223333:mfa/ravi --token-code 123456 --duration-seconds 3600
अपेक्षित output:
{ "Credentials": { "AccessKeyId": "ASIA...", "Expiration": "..." } }
6. Encoded error message decode
हे का लागतं?
काही EC2 errors मोठा encoded string देतात. त्यात deny चं नक्की कारण असतं.
हे काय आहे?
decode-authorization-message वाचता येणारा JSON देतो.
कसं करायचं (step by step)
- Decode.
aws sts decode-authorization-message --encoded-message "<long-string>" --query DecodedMessage --output text | python3 -m json.tool | head -8
अपेक्षित output:
{
"allowed": false,
"explicitDeny": false,
"matchedStatements": { "items": [] },
"context": { "action": "ec2:RunInstances", ...
7. हीच action Python, Node.js, Java, Go, .NET आणि PHP मध्ये
हे का लागतं?
Scripts CLI मध्ये सुरू होतात. Apps तोच API SDK मधून call करतात. दोन्ही माहीत असले की test केलेली command थेट code मध्ये नेता येते.
हे काय आहे?
प्रत्येक CLI command म्हणजे एक API call. उदा. aws sts assume-role म्हणजे AssumeRole API.
कसं करायचं (step by step)
हीच action (AssumeRole) code मधून. प्रत्येक SDK CLI सारखेच profile, region आणि credentials वाचतो.
| Stack | Code |
|---|---|
| Python (boto3) | c = boto3.client("sts").assume_role(RoleArn=arn, RoleSessionName="app")["Credentials"] |
| Node.js (v3) | const {Credentials} = await sts.send(new AssumeRoleCommand({RoleArn: arn, RoleSessionName:"app"})); |
| Java (v2) | sts.assumeRole(r -> r.roleArn(arn).roleSessionName("app")).credentials(); |
| Go (v2) | stscreds.NewAssumeRoleProvider(sts.NewFromConfig(cfg), arn) |
| .NET | await sts.AssumeRoleAsync(new AssumeRoleRequest{RoleArn=arn, RoleSessionName="app"}); |
| PHP | $sts->assumeRole(["RoleArn"=>$arn,"RoleSessionName"=>"app"])["Credentials"]; |
8. काहीही खर्च चालू राहू नये म्हणून cleanup
हे का लागतं?
चालू ठेवलेले lab resources पैसे खातात आणि security risk बनतात.
हे काय आहे?
उलट्या क्रमाने delete करा: आधी children, मग parents.
कसं करायचं (step by step)
- Temporary keys unset.
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
अपेक्षित output:
(no output means success)
- Cached role creds clear.
rm -rf ~/.aws/cli/cache
अपेक्षित output:
(no output means success)
Ravindra Bagale's Tip
--role-session-name तुमचं नाव ठेवा. CloudTrail मध्ये दिसतं, कोणी role वापरला ते कळतं.
9. मुलाखत प्रश्न आणि उत्तरं
प्र. STS credentials चे तीन भाग?
AccessKeyId, SecretAccessKey, SessionToken.
प्र. Key temporary आहे कसं ओळखायचं?
ASIA ने सुरू = temporary, AKIA = long-lived.
प्र. source_profile काय करतो?
AssumeRole call साठी कोणत्या profile च्या keys ते सांगतो.
प्र. AssumeRole AccessDenied, कुठे बघायचं?
तुमची sts:AssumeRole permission आणि role trust Principal.
प्र. MFA सोबत get-session-token का?
Policies मधल्या MFA conditions पूर्ण करायला.
घरी करून बघा
- ReadOnly role assume करणारा profile बनवून buckets list करा.
- 900 seconds साठी role assume करा आणि 15 मिनिटांनी expire बघा.
थोडक्यात सांगायचं तर
- आधी get-caller-identity.
- assume-role तीन values.
- role_arn + source_profile automatic.
- MFA: get-session-token किंवा mfa_serial.
- decode-authorization-message deny समजावतो.
सराव Tasks
Dublin Fitness Club हा डब्लिन मधला फिटनेस व्यवसाय आहे. Siobhan Murphy त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे EUR मध्ये मोजले जातात आणि AWS resources eu-west-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 12
सोपं तुम्ही कोण म्हणून login आहात ते पाहा
का: बदल करण्याआधी account व identity नेहमी तपासा.
काय करायचं: तुमचा CLI वापरत असलेल्या identity चा account ID व ARN दाखवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Sender email verify करा
का: SES फक्त verified addresses/domains वरून पाठवतो.
काय करायचं: noreply@dublinfit.ie sender address verify करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं CloudFormation: versioned bucket
का: IaC मुळे setup पुन्हा करता येतं.
काय करायचं: dublinfit-docs नावाचा, versioning Enabled असलेला एक S3 bucket CloudFormation YAML मध्ये लिहा.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
मध्यम Lambda role साठी trust policy
का: Trust policy role कोण घेऊ शकतो ते सांगते.
काय करायचं: lambda.amazonaws.com ला role assume करू देणारी trust policy लिहा.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
मध्यम Role assume करा
का: AssumeRole दुसऱ्या role च्या, बहुदा दुसऱ्या account मधल्या, अल्पकालीन keys देतो.
काय करायचं: Role arn:aws:iam::132788974236:role/Auditor session नाव siobhan-audit ने assume करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Storage खर्च
का: Storage per GB-month.
काय करायचं: S3 Standard मध्ये 500 GB, USD 0.023 per GB-month. Monthly खर्च USD?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Public website साठी bucket policy
का: Static website bucket ने सगळ्यांना files वाचू द्याव्या.
काय करायचं: dublinfit-site मधल्या प्रत्येक object वर कोणालाही (*) s3:GetObject करू देणारी bucket policy लिहा.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
मध्यम एका folder मध्ये फक्त upload
का: Field staff files टाकू शकतात पण वाचू/delete करू शकत नाहीत.
काय करायचं: dublinfit-data मध्ये फक्त uploads/ prefix खाली s3:PutObject allow करा.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
अवघड दुसऱ्या account ला role assume करू द्या
का: Access keys share करण्यापेक्षा cross-account roles सुरक्षित.
काय करायचं: Account 111122223333 ला हा role assume करू देणारी trust policy लिहा.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
अवघड 15 मिनिटांसाठी role assume करा
का: Keys leak झाल्यास छोटे sessions धोका कमी करतात.
काय करायचं: arn:aws:iam::132788974236:role/Deployer ला session नाव deploy-job ने 900 seconds साठी assume करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड MFA सह session token घ्या
का: काही actions ना MFA लागतो. get-session-token MFA proof असलेल्या keys देतो.
काय करायचं: MFA device arn:aws:iam::132788974236:mfa/siobhan व code 123456 वापरून session token घ्या.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Test email पाठवा
का: Code लिहिण्याआधी CLI send ने SES setup तपासतो.
काय करायचं: noreply@dublinfit.ie वरून siobhan@example.com ला subject "Receipt" व text body "Thank you" असा email पाठवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.




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