Ravindra BagaleCourses & study guides English

AWS CLI KMS Commands: Key बनवा, Encrypt आणि Decrypt करा

AWS सांभाळत असलेल्या keys ने data lock: key आणि alias, encrypt व decrypt, मोठ्या files साठी data keys, rotate, grant आणि safe delete.

या chapter मध्ये तुम्ही काय शिकाल

  • Key आणि alias
  • Encrypt आणि decrypt
  • Envelope encryption
  • Rotation आणि policies
  • Grants आणि deletion

1. मोठं चित्र: watchman कडची master key

हे का लागतं?

Society मध्ये watchman master key ठेवतो, कोणी घेतली ते लिहितो. KMS तुमची master key hardware मध्ये ठेवतो, कधी बाहेर देत नाही, आणि CloudTrail प्रत्येक वापर नोंदवतो.

हे काय आहे?

Commands aws kms मध्ये: create-key, create-alias, encrypt, decrypt, generate-data-key, enable-key-rotation, schedule-key-deletion.

कसं करायचं (step by step)

Encryption workflowcreate-keycreate-alias alias/cli-appencrypt (4 KB पर्यंत)मोठ्या data साठी generate-data-keydecrypt
Master key KMS बाहेर जात नाही.

2. Key आणि alias

हे का लागतं?

S3, EBS, RDS ला तुमच्या control मधली, audit होणारी key हवी.

हे काय आहे?

create-key symmetric customer managed key बनवतो. Alias friendly नाव, दुसऱ्या key ला हलवता येतं.

कसं करायचं (step by step)

  1. बनवा आणि alias.
K=$(aws kms create-key --description "cli app key" --query KeyMetadata.KeyId --output text)
aws kms create-alias --alias-name alias/cli-app --target-key-id $K
aws kms list-aliases --query "Aliases[?AliasName=='alias/cli-app'].TargetKeyId" --output text

अपेक्षित output:

1234abcd-12ab-34cd-56ef-1234567890ab

3. Encrypt आणि decrypt

हे का लागतं?

Token सारखा छोटा secret file किंवा DB मध्ये सुरक्षित ठेवायचा.

हे काय आहे?

encrypt 4 KB पर्यंत घेतो, base64 ciphertext देतो. decrypt ciphertext वरूनच key शोधतो.

कसं करायचं (step by step)

  1. File encrypt.
echo "hello pune" > plain.txt
aws kms encrypt --key-id alias/cli-app --plaintext fileb://plain.txt --query CiphertextBlob --output text | base64 -d > secret.bin
ls -l secret.bin

अपेक्षित output:

-rw-r--r-- 1 you you 184 Oct 24 11:40 secret.bin
  1. Decrypt.
aws kms decrypt --ciphertext-blob fileb://secret.bin --query Plaintext --output text | base64 -d

अपेक्षित output:

hello pune
  1. Encryption context.
aws kms encrypt --key-id alias/cli-app --plaintext fileb://plain.txt --encryption-context app=shop --query KeyId --output text

अपेक्षित output:

arn:aws:kms:ap-south-1:111122223333:key/1234abcd-...

4. Data keys ने envelope encryption

हे का लागतं?

2 GB backup KMS encrypt साठी खूप मोठा, आणि network वर पाठवणं slow.

हे काय आहे?

generate-data-key plaintext key (वापरा, विसरा) आणि तीच encrypted key (data शेजारी ठेवा) देतो. वाचताना छोटी key decrypt, मग data local.

कसं करायचं (step by step)

  1. Data key घ्या.
aws kms generate-data-key --key-id alias/cli-app --key-spec AES_256 --query "[Plaintext,CiphertextBlob]" --output text > dk.txt
cut -f1 dk.txt | base64 -d > dk.bin; cut -f2 dk.txt | base64 -d > dk.enc

अपेक्षित output:

(two files: dk.bin 32 bytes, dk.enc)
  1. मोठी file local encrypt, plain key टाका.
openssl enc -aes-256-cbc -pbkdf2 -in backup.tar -out backup.tar.enc -pass file:dk.bin
shred -u dk.bin dk.txt
ls backup.tar.enc dk.enc

अपेक्षित output:

backup.tar.enc  dk.enc

5. Rotation, grants आणि deletion

हे का लागतं?

Keys दरवर्षी बदलाव्यात; service ला तात्पुरता वापर; जुन्या keys काळजीपूर्वक.

हे काय आहे?

enable-key-rotation दरवर्षी key material बदलतो; जुना data decrypt होतो. create-grant तात्पुरता वापर. schedule-key-deletion 7–30 दिवस थांबतो, cancel करता येतं.

कसं करायचं (step by step)

  1. Rotation चालू.
aws kms enable-key-rotation --key-id $K
aws kms get-key-rotation-status --key-id $K --query KeyRotationEnabled

अपेक्षित output:

true
  1. Role ला decrypt grant.
aws kms create-grant --key-id $K --grantee-principal arn:aws:iam::111122223333:role/cli-lambda-role --operations Decrypt --query GrantId --output text

अपेक्षित output:

0c237476b39f8bc44e45212e08498fbe3151305030726c0590dd8d3824f9
  1. खात्री नसेल तर आधी disable.
aws kms disable-key --key-id $K
aws kms describe-key --key-id $K --query KeyMetadata.KeyState --output text

अपेक्षित output:

Disabled

6. हीच action Python, Node.js, Java, Go, .NET आणि PHP मध्ये

हे का लागतं?

Scripts CLI मध्ये सुरू होतात. Apps तोच API SDK मधून call करतात. दोन्ही माहीत असले की test केलेली command थेट code मध्ये नेता येते.

हे काय आहे?

प्रत्येक CLI command म्हणजे एक API call. उदा. aws kms encrypt --key-id alias/cli-app --plaintext fileb://plain.txt म्हणजे Encrypt API.

कसं करायचं (step by step)

हीच action (Encrypt) code मधून. प्रत्येक SDK CLI सारखेच profile, region आणि credentials वाचतो.

StackCode
Python (boto3)boto3.client("kms").encrypt(KeyId="alias/cli-app",Plaintext=b"hello")["CiphertextBlob"]
Node.js (v3)await kms.send(new EncryptCommand({KeyId:"alias/cli-app",Plaintext:Buffer.from("hello")}));
Java (v2)kms.encrypt(r -> r.keyId("alias/cli-app").plaintext(SdkBytes.fromUtf8String("hello")));
Go (v2)c.Encrypt(ctx, &kms.EncryptInput{KeyId: aws.String("alias/cli-app"), Plaintext: []byte("hello")})
.NETawait kms.EncryptAsync(new EncryptRequest{KeyId="alias/cli-app",Plaintext=new MemoryStream(Encoding.UTF8.GetBytes("hello"))});
PHP$kms->encrypt(["KeyId"=>"alias/cli-app","Plaintext"=>"hello"]);

7. काहीही खर्च चालू राहू नये म्हणून cleanup

हे का लागतं?

चालू ठेवलेले lab resources पैसे खातात आणि security risk बनतात.

हे काय आहे?

उलट्या क्रमाने delete करा: आधी children, मग parents.

कसं करायचं (step by step)

  1. Alias delete.
aws kms delete-alias --alias-name alias/cli-app

अपेक्षित output:

(no output means success)
  1. Key deletion schedule (किमान 7 दिवस).
aws kms schedule-key-deletion --key-id $K --pending-window-in-days 7 --query KeyState --output text

अपेक्षित output:

PendingDeletion
  1. विचार बदलला?
aws kms cancel-key-deletion --key-id $K --query KeyId --output text

अपेक्षित output:

1234abcd-12ab-34cd-56ef-1234567890ab

Ravindra Bagale's Tip

KMS key delete केली तर त्याने encrypt केलेला सगळा data कायमचा वाचता येत नाही. आधी disable करा, CloudTrail मध्ये failed decrypts बघा, मग deletion schedule.

8. मुलाखत प्रश्न आणि उत्तरं

प्र. Envelope encryption?

Data key ने data, KMS key ने data key.

प्र. decrypt ला --key-id का नको?

Ciphertext मध्ये key id.

प्र. AWS managed vs customer managed?

Automatic vs तुमचा control.

प्र. Encrypt size limit?

4 KB.

प्र. Encryption context?

Decrypt ला तेच context लागतं.

घरी करून बघा

  1. Encryption context सह file encrypt करून त्याशिवाय decrypt करून बघा.
  2. 10 MB file वर envelope encryption करून restore करा.

थोडक्यात सांगायचं तर

  1. create-key + alias.
  2. encrypt ≤ 4 KB.
  3. मोठ्या data साठी data keys.
  4. Rotation चालू.
  5. Delete आधी disable.

सराव Tasks

या scenario बद्दल

Ahmednagar Sugar Co-op हा अहिल्यानगर मधला साखर सहकारी व्यवसाय आहे. Balasaheb Pawar त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 10

सोपं KMS key बनवा

का: Customer managed key ने कोण encrypt/decrypt करू शकतो ते तुम्ही ठरवता.

काय करायचं: "nagarsugar data key" description सह KMS key बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं दरवर्षी key rotation सुरू करा

का: Automatic rotation जुना data न मोडता key material बदलतो.

काय करायचं: Key 1234abcd-12ab-34cd-56ef-1234567890ab साठी automatic rotation सुरू करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं /16 मध्ये किती addresses?

का: VPC size ठरवायला ही संख्या लागते.

काय करायचं: Ahmednagar Sugar Co-op चा VPC 10.26.0.0/16. एकूण किती IP addresses?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं SSH चा port

का: Security group rules ला योग्य port हवा.

काय करायचं: SSH साठी security group ने कोणता TCP port उघडावा?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम Key ला सोपं alias द्या

का: Aliases key IDs पेक्षा वाचायला सोपे.

काय करायचं: Key 1234abcd-12ab-34cd-56ef-1234567890ab साठी alias/nagarsugar-data alias बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Blob decrypt करा

का: Ciphertext ला कोणत्या key ने बनवलं ते माहीत असतं.

काय करायचं: secret.enc मधला ciphertext decrypt करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम छोटी file encrypt करा

का: KMS Encrypt 4 KB पर्यंतच्या data साठी, उदा. password किंवा token.

काय करायचं: secret.txt ला alias/nagarsugar-data key ने encrypt करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Key वापरा, manage नाही

का: Apps ना Encrypt/Decrypt; keys फक्त admins बदलतात.

काय करायचं: फक्त arn:aws:kms:ap-south-1:131959625285:key/1234abcd-12ab-34cd-56ef-1234567890ab वर kms:Encrypt, kms:Decrypt, kms:GenerateDataKey allow करा.

कसं करायचं:
  1. { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
  2. प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
  3. Task ला लागेल तेवढंच द्या (least privilege).
  4. Double quotes व commas नीट वापरा. Check answer दाबा.

अवघड Data key बनवा

का: Envelope encryption: KMS data key देतो; मोठ्या files locally encrypt करता.

काय करायचं: alias/nagarsugar-data खाली AES_256 data key बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड KMS ने default encryption

का: Default encryption मुळे प्रत्येक नवा object encrypt होतो.

काय करायचं: enc.json मधल्या encryption settings nagarsugar-hr-docs bucket ला लावा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

KMS encrypt. Watchman master key कधी देत नाही. create-key आणि alias. 4 KB पर्यंत encrypt. decrypt key स्वतः शोधतो.
उजळणी card: KMS encrypt · PNG download करा · Card page उघडा
KMS data keys. मोठ्या files ना envelope encryption. generate-data-key: plain + encrypted. Local encrypt, plain key shred. schedule-key-deletion आधी disable.
उजळणी card: KMS data keys · PNG download करा · Card page उघडा
kms encrypt vs Data key. 4 KB पर्यंत. / कोणतीही size.
तुलना: kms encrypt vs Data key · PNG download करा · Card page उघडा
Envelope encryption काय?. Data key data encrypt करते. KMS key data key encrypt करते. Encrypted key data सोबत.
मुलाखत card: Envelope encryption काय? · PNG download करा · Card page उघडा

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