
डेवलपमेंट वातावरण में AWS क्रेडेंशियल्स को सुरक्षित रूप से संग्रहीत और एक्सेस करने के लिए एक वॉल्ट
[!WARNING] यह प्रोजेक्ट छोड़ दिया गया है और इसे अब कोई और अपडेट नहीं मिल रहे हैं। यदि आप अपडेट प्राप्त करना जारी रखना चाहते हैं या योगदान देना चाहते हैं, तो कृपया यहाँ सक्रिय फोर्क देखें: https://github.com/ByteNess/aws-vault
AWS Vault एक ऐसा टूल है जो डेवलपमेंट एनवायरनमेंट में AWS क्रेडेंशियल्स को सुरक्षित रूप से संग्रहीत और एक्सेस करने के लिए है।
AWS Vault आपके ऑपरेटिंग सिस्टम के सुरक्षित कीस्टोर में IAM क्रेडेंशियल्स को संग्रहीत करता है और फिर उनसे अस्थायी क्रेडेंशियल्स उत्पन्न करता है ताकि उन्हें आपके शेल और एप्लिकेशन्स के सामने प्रस्तुत किया जा सके। यह AWS CLI टूल्स के पूरक के रूप में डिज़ाइन किया गया है, और यह आपके ~/.aws/config में प्रोफाइल और कॉन्फ़िगरेशन से अवगत रहता है।
अधिक जानकारी के लिए announcement blog post देखें।
आप AWS Vault को इंस्टॉल कर सकते हैं:
brew install aws-vaultport install aws-vaultchoco install aws-vaultscoop install aws-vaultbrew install aws-vaultpacman -S aws-vaultemerge --ask app-admin/aws-vault (पहले Guru सक्षम करें)pkg install aws-vaultzypper install aws-vaultnix-env -i aws-vaultasdf plugin-add aws-vault https://github.com/karancode/asdf-aws-vault.git && asdf install aws-vault <version>कॉन्फ़िग, उपयोग, टिप्स और ट्रिक्स USAGE.md फ़ाइल में उपलब्ध हैं।
समर्थित vaulting बैकएंड्स हैं:
निर्दिष्ट करने के लिए --backend फ़्लैग या AWS_VAULT_BACKEND एनवायरनमेंट वेरिएबल का उपयोग करें।
# Store AWS credentials for the "jonsmith" profile
$ aws-vault add jonsmith
Enter Access Key Id: ABDCDEFDASDASF
Enter Secret Key: %%%
# Execute a command (using temporary credentials)
$ aws-vault exec jonsmith -- aws s3 ls
bucket_1
bucket_2
# open a browser window and login to the AWS Console
$ aws-vault login jonsmith
# List credentials
$ aws-vault list
Profile Credentials Sessions
======= =========== ========
jonsmith jonsmith -
# Start a subshell with temporary credentials
$ aws-vault exec jonsmith
Starting subshell /bin/zsh, use `exit` to exit the subshell
$ aws s3 ls
bucket_1
bucket_2
aws-vault अस्थायी क्रेडेंशियल्स उत्पन्न करने के लिए Amazon की STS सेवा का उपयोग GetSessionToken या AssumeRole API कॉल्स के माध्यम से करता है। ये थोड़े समय में समाप्त हो जाते हैं, इसलिए क्रेडेंशियल्स लीक होने का जोखिम कम हो जाता है।
AWS Vault फिर अस्थायी क्रेडेंशियल्स को सब-प्रोसेस के सामने दो तरीकों में से एक में प्रस्तुत करता है
$ aws-vault exec jonsmith -- env | grep AWS
AWS_VAULT=jonsmith
AWS_DEFAULT_REGION=us-east-1
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=%%%
AWS_SECRET_ACCESS_KEY=%%%
AWS_SESSION_TOKEN=%%%
AWS_CREDENTIAL_EXPIRATION=2020-04-16T11:16:27Z
$ aws-vault exec --server jonsmith -- env | grep AWS
AWS_VAULT=jonsmith
AWS_DEFAULT_REGION=us-east-1
AWS_REGION=us-east-1
AWS_CONTAINER_CREDENTIALS_FULL_URI=%%%
AWS_CONTAINER_AUTHORIZATION_TOKEN=%%%
डिफ़ॉल्ट रूप से एनवायरनमेंट वेरिएबल्स का उपयोग किया जाता है, लेकिन आप exec कमांड पर --server फ़्लैग के साथ लोकल इंस्टेंस मेटाडेटा सर्वर को ऑप्ट-इन कर सकते हैं।
Best-practice यह है कि अनुमतियाँ सौंपने के लिए Roles बनाएँ। सुरक्षा के लिए, आपको यह भी आवश्यक बनाना चाहिए कि उपयोगकर्ता मल्टी-फैक्टर ऑथेंटिकेशन (MFA) डिवाइस से उत्पन्न एक-बार का की प्रदान करें।
पहले आपको IAM में उपयोगकर्ताओं और भूमिकाओं को बनाना होगा, साथ ही MFA डिवाइस सेटअप करना होगा। इसके बाद आप MFA लागू करने के लिए IAM भूमिकाएँ सेट कर सकते हैं।
यहाँ भूमिकाओं और MFA का उपयोग करने वाला एक उदाहरण कॉन्फ़िगरेशन है:
[default]
region = us-east-1
[profile jonsmith]
mfa_serial = arn:aws:iam::111111111111:mfa/jonsmith
[profile foo-readonly]
source_profile = jonsmith
role_arn = arn:aws:iam::22222222222:role/ReadOnly
[profile foo-admin]
source_profile = jonsmith
role_arn = arn:aws:iam::22222222222:role/Administrator
mfa_serial = arn:aws:iam::111111111111:mfa/jonsmith
[profile bar-role1]
source_profile = jonsmith
role_arn = arn:aws:iam::333333333333:role/Role1
mfa_serial = arn:aws:iam::111111111111:mfa/jonsmith
[profile bar-role2]
source_profile = bar-role1
role_arn = arn:aws:iam::333333333333:role/Role2
mfa_serial = arn:aws:iam::111111111111:mfa/jonsmith
aws-vault से आप यह अपेक्षा कर सकते हैं