
خزنة لتخزين بيانات اعتماد AWS والوصول إليها بشكل آمن في بيئات التطوير
[!WARNING] تم التخلي عن هذا المشروع ولم يعد يتلقى أي تحديثات. إذا كنت ترغب في الاستمرار في تلقي التحديثات أو المساهمة، فلا تتردد في الاطلاع على النسخة المتفرعة النشطة على: https://github.com/ByteNess/aws-vault
AWS Vault هو أداة لتخزين بيانات اعتماد AWS والوصول إليها بشكل آمن في بيئة التطوير.
يقوم AWS Vault بتخزين بيانات اعتماد IAM في مخزن المفاتيح الآمن لنظام التشغيل الخاص بك، ثم ينشئ بيانات اعتماد مؤقتة منها لعرضها على shell والتطبيقات الخاصة بك. وهو مصمم ليكون مكملاً لأدوات AWS CLI، وهو على دراية بـ ملفات التعريف والتكوين في ~/.aws/config.
اطلع على منشور المدونة الإعلاني لمزيد من التفاصيل.
يمكنك تثبيت 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.
خلفيات التخزين الآمن المدعومة هي:
استخدم علامة --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 خدمة STS من Amazon لإنشاء بيانات اعتماد مؤقتة عبر استدعاءات API الخاصة بـ GetSessionToken أو AssumeRole. تنتهي صلاحية هذه البيانات في فترة زمنية قصيرة، مما يقلل من خطر تسرب بيانات الاعتماد.
ثم يقوم 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=%%%
الإعداد الافتراضي هو استخدام متغيرات البيئة، ولكن يمكنك الاشتراك في خادم البيانات الوصفية المحلي باستخدام علامة --server على أمر exec.
من أفضل الممارسات هو إنشاء أدوار لتفويض الأذونات. ولأغراض الأمان، يجب عليك أيضًا أن تطلب من المستخدمين تقديم مفتاح لمرة واحدة يتم إنشاؤه من جهاز المصادقة متعددة العوامل (MFA).
أولاً ستحتاج إلى إنشاء المستخدمين والأدوار في IAM، بالإضافة إلى إعداد جهاز MFA. يمكنك بعد ذلك إعداد أدوار IAM لفرض MFA.
إليك مثال على التكوين باستخدام الأدوار و 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
| Command | Credentials | Cached | MFA |
|---|---|---|---|
aws-vault exec jonsmith --no-session | Long-term credentials | No | No |
aws-vault exec jonsmith | session-token | session-token | Yes |
aws-vault exec foo-readonly | role | No | No |
aws-vault exec foo-admin | session-token + role | session-token | Yes |
aws-vault exec foo-admin --duration=2h | role | role | Yes |
aws-vault exec bar-role2 | session-token + role + role | session-token | Yes |
aws-vault exec bar-role2 --no-session | role + role | role | Yes |
إن إصدارات macOS موقعة برمجيًا لتجنب المطالبات الإضافية في Keychain. يمكنك التحقق من ذلك باستخدام:
$ codesign --verify --verbose $(which aws-vault)