Roles, अस्थायी credentials, और SigV4

डेवलपर्स के लिए AWS Security का उपयोग

Rahul Singh

Technical Product Manager

वह key जो काम से भी लंबा जीती है

काम तेज करने के लिए, एक key स्क्रिप्ट में बनाई जाती है और एक configuration फ़ाइल में रखी जाती है.

फ़ाइल के अंदर यह:

  • कभी rotate नहीं होती
  • कभी revoke नहीं होती
  • कभी expire नहीं होती

एक access key छह स्टोरेज लोकेशन में फैलती हुई, दाईं ओर टाइम एक्सिस दिखा रहा है कि अठारहवें महीने पर भी मान्य है

डेवलपर्स के लिए AWS Security का उपयोग

वह key जो काम से भी लंबा जीती है

काम तेज करने के लिए, एक key स्क्रिप्ट में बनाई जाती है और एक configuration फ़ाइल में रखी जाती है.

फ़ाइल के अंदर यह:

  • कभी rotate नहीं होती
  • कभी revoke नहीं होती
  • कभी expire नहीं होती

 

18 महीनों बाद भी यह मान्य है

एक access key छह स्टोरेज लोकेशन में फैलती हुई, दाईं ओर टाइम एक्सिस दिखा रहा है कि अठारहवें महीने पर भी मान्य है

डेवलपर्स के लिए AWS Security का उपयोग

अपने आप expire होने वाले credentials

AWS STS के साथ expiry को default बनाएँ

  1. एक role माँगें, built-in clock वाले credentials पाएँ

  2. Security Token Service (STS): expiry जुड़ा होता है, डिफ़ॉल्ट एक घंटा

एक एप्लिकेशन AWS STS पर AssumeRole कॉल करता है, और STS built-in clock वाले credentials लौटाता है.

डेवलपर्स के लिए AWS Security का उपयोग

अपने आप expire होने वाले credentials

AWS STS के साथ expiry को default बनाएँ

  1. एक role माँगें, built-in clock वाले credentials पाएँ

  2. अस्थायी credentials ASIA से शुरू होते हैं और session token रखते हैं

  3. Security Token Service (STS): expiry जुड़ा होता है, डिफ़ॉल्ट एक घंटा

एक एप्लिकेशन AWS STS पर AssumeRole कॉल करता है और built-in clock वाले credentials प्राप्त करता है. नीचे, दो credentials साथ-साथ: एक long-lived key जो AKIA से शुरू होती है, जिसके पास session token नहीं और कभी expire नहीं होती, और अस्थायी credentials जो ASIA से शुरू होते हैं, session token रखते हैं और एक घंटे में expire होते हैं.

डेवलपर्स के लिए AWS Security का उपयोग

अपने आप expire होने वाले credentials

AWS STS के साथ expiry को default बनाएँ

  1. एक role माँगें, built-in clock वाले credentials पाएँ

  2. अस्थायी credentials ASIA से शुरू होते हैं और session token रखते हैं

  3. वही call पहले स्वीकार होती है, फिर नहीं

  4. Security Token Service (STS): expiry जुड़ा होता है, डिफ़ॉल्ट एक घंटा

एक एप्लिकेशन AWS STS पर AssumeRole कॉल करता है और built-in clock वाले credentials प्राप्त करता है. नीचे, एक long-lived key जो AKIA से शुरू होती है और कभी expire नहीं होती, उसके पास अस्थायी credentials जो ASIA से शुरू होते हैं, session token रखते हैं और एक घंटे में expire होते हैं. सबसे नीचे, वही GetObject कॉल दस बजे 200 OK लौटाती है और ग्यारह बजकर पाँच मिनट पर ExpiredToken.

डेवलपर्स के लिए AWS Security का उपयोग

आपका code इन्हें कैसे ढूँढता है

Credential provider chain जाँचना

  • AWS SDK, जो आपकी code लाइब्रेरी है, खोज करता है
  • एक तय सूची, क्रम में जाँची जाती है
  • पहला मिलान मिलते ही रुक जाता है

Credential lookup क्रम: code में पास की गई key ऊपर strike-through है, और खोज फिर environment variables, config file और container credentials से नीचे जाती है, पहले मिलान पर रुकती है और instance metadata तक नहीं पहुँचती

डेवलपर्स के लिए AWS Security का उपयोग

आपका code इन्हें कैसे ढूँढता है

Credential provider chain जाँचना

  • AWS SDK, जो आपकी code लाइब्रेरी है, खोज करता है
  • एक तय सूची, क्रम में जाँची जाती है
  • पहला मिलान मिलते ही रुक जाता है

 

Hard-coded keys पहले जाँची जाती हैं, इसलिए इन्हें हटाना ज़रूरी है

Credential lookup क्रम: code में पास की गई key ऊपर strike-through है, और खोज फिर environment variables, config file और container credentials से नीचे जाती है, पहले मिलान पर रुकती है और instance metadata तक नहीं पहुँचती

डेवलपर्स के लिए AWS Security का उपयोग

चैन, कड़ी-दर-कड़ी

1. explicit      a key passed in your code
2. environment   AWS_* variables, and on Lambda
                 that is the execution role
3. config file   ~/.aws/credentials
4. container     ECS or EKS task role
5. instance      EC2 instance profile, via IMDS
  • First match wins
  • स्टोर्ड key हटाएँ, खोज role तक जारी रहती है
डेवलपर्स के लिए AWS Security का उपयोग

AWS के बाहर से पहचान साबित करना

Code pipelines अक्सर AWS के बाहर चलती हैं, इसलिए credential chain जोड़ी नहीं जा सकती

  • GitHub या GitLab पर चलती हैं
  • चैन के मिलने के लिए कुछ नहीं

एक CI runner और उसका प्लेटफ़ॉर्म AWS सीमा के बाहर, runner पर कोई role न जुड़ पाने का चिह्न, और प्लेटफ़ॉर्म एक OIDC token पर हस्ताक्षर करता हुआ जिसमें एक repository और एक workflow का नाम है

डेवलपर्स के लिए AWS Security का उपयोग

AWS के बाहर से पहचान साबित करना

Code pipelines अक्सर AWS के बाहर चलती हैं, इसलिए credential chain जोड़ी नहीं जा सकती

  • GitHub या GitLab पर चलती हैं
  • चैन के मिलने के लिए कुछ नहीं

 

OIDC token (OpenID Connect)

  • साइन किया हुआ और अल्प-आयु
  • पहचान का बयान, credential नहीं

एक CI runner और उसका प्लेटफ़ॉर्म AWS सीमा के बाहर, runner पर कोई role न जुड़ पाने का चिह्न, और प्लेटफ़ॉर्म एक OIDC token पर हस्ताक्षर करता हुआ जिसमें एक repository और एक workflow का नाम है

डेवलपर्स के लिए AWS Security का उपयोग

स्टोर्ड key की जगह एक नियम

एक OIDC token जो किसी repository का नाम रखता है, AssumeRoleWithWebIdentity से बदला जाता है अस्थायी credentials में जो एक घंटे में expire होते हैं, क्योंकि role की trust policy पहले से उस issuer और उस repository को नाम देती है

टोकन को credentials में बदलना

डेवलपर्स के लिए AWS Security का उपयोग

स्टोर्ड key की जगह एक नियम

एक OIDC token जो किसी repository का नाम रखता है, AssumeRoleWithWebIdentity से बदला जाता है अस्थायी credentials में जो एक घंटे में expire होते हैं, क्योंकि role की trust policy पहले से उस issuer और उस repository को नाम देती है

टोकन को credentials में बदलना

  • AssumeRoleWithWebIdentity: AssumeRole, बाहरी token को प्रमाण के रूप में लेकर
  • Trust policy: role पर पहले से लिखी हुई, pipeline में स्टोर नहीं होती
  • Claim: टोकन के अंदर का एक तथ्य
  • Issuer प्लेटफ़ॉर्म की हर repository से साझा होता है, इसलिए repository को भी पिन करें

Repository secrets: अब खाली

डेवलपर्स के लिए AWS Security का उपयोग

हर request साइन होती है

Signature Version 4, या SigV4

  • साबित करता है कि किस credential ने request की
  • साबित करता है कि request ट्रांज़िट में बदली नहीं गई
  • हर कॉल पर CLI और SDK द्वारा साइन की जाती है

साइनिंग फ्लो जिसमें एक request और आपके credentials एक signature बनाते हैं जो Authorization हेडर में भेजा जाता है, AWS उसे फिर से compute कर तुलना करता है, मिलान पर स्वीकार करता है और mismatch पर SignatureDoesNotMatch लौटाता है

डेवलपर्स के लिए AWS Security का उपयोग

एक signature जिसे आप सौंप सकते हैं

अस्थायी credentials

  • कई actions, role द्वारा scoped
  • आपके code के पास रखे जाते हैं

आपका code चार अलग AWS सेवाओं, S3, DynamoDB, SQS और KMS को अस्थायी credentials के साथ कॉल करता है

डेवलपर्स के लिए AWS Security का उपयोग

एक signature जिसे आप सौंप सकते हैं

अस्थायी credentials

  • कई actions, role द्वारा scoped
  • आपके code के पास रखे जाते हैं

Pre-signed URL

  • एक object, एक action, और लिंक जिसके पास हो वह
  • आपकी चुनी expiry, फिर कुछ नहीं
  • आपकी permissions ले जाता है, धारक की नहीं

आपका code चार अलग AWS सेवाओं, S3, DynamoDB, SQS और KMS को अस्थायी credentials के साथ कॉल करता है

किसी और का ब्राउज़र एक ही path से ठीक एक object तक पहुँच रहा है, बीच में आपकी सेट की expiry वाला घड़ी-चिह्न

डेवलपर्स के लिए AWS Security का उपयोग

अभ्यास करते हैं!

डेवलपर्स के लिए AWS Security का उपयोग

Preparing Video For Download...