2015-08-05 23 views
29

aws yardımcı programına geçirilebilen bir komut/alt komut var mı? 1) ~/.aws/credentials dosyasındaki kimlik bilgilerinin geçerli olduğunu doğrulayın ve 2) hangi kullanıcının kimlik bilgileri aittir? Kullanıcının IAM veya herhangi bir özel hizmete ilişkin izinleri hakkında varsayımlarda bulunmayan genel bir şey arıyorum.AWS Komut Satırı Araçları için kimlik bilgileri nasıl test edilir

Bunun için kullanım durumu, kimlik bilgilerinin iyi olduğundan emin olmak için dağıtım zamanı denetlemesidir. İdeal olarak, geri dönüş değerini kontrol etmenin ve geçersiz kimlik bilgileri varsa dağıtımı iptal etmenin bir yolu olacaktır.

+1

Bunun daha iyi bir şekilde http://serverfault.com/ adresinden istenebileceğini söyleyebilir miyim? Yığın Taşması özellikle programlama soruları içindir. –

+2

@TrippKinetics Evet, nerede sorulacağı konusunda çitlerdeydim. Aklımda, sorunun eti, sunucuların kendi başına yönetilmesini değil, programlı olarak bir API'nin sorgulanmasıyla ilgilidir. – smitelli

cevap

28

Düzgün bir yol var - aws iam get-user, kullanıcının (ayrıcalıklarına sahip olması koşuluyla) bulunduğunuzla ilgili ayrıntıları söyler (geçerli IAM Kullanıcısı).

CLI çift Eğer işlemi gerçekleştirmek için gerekli config/popülariten yok edip etmediğini söylemek hangi aws ec2 run-instances gibi --dry-run bayrağını destekleyen çağrıları vardır.

Ayrıca, komutu çalıştırmadan komut için gerekli izinlere sahip olup olmadığınızı kontrol eden --auth-dry-run da vardır. Gerekli izinleriniz varsa, komut DryRunOperation; aksi halde, UnauthorizedOperation değerini döndürür. [From AWS Documentation - Common Options]

IAM Erişim Anahtarlarını, hangi anahtarın kime atandığını görmek için kontrol edebileceğiniz Yönetim Konsolu'ndan listeleyebilirsiniz.

Hangi kullanıcı/rolün hangi ayrıcalıklara sahip olduğunu anlamanın en iyi yolu IAM Policy Simulator'u kullanıyor.

+5

İronik olarak, kullanıcı sınaması bir 'AccessDenied 'hatası olarak çalıştırdı - hangi dahil tam' arn: aws: iam :: 123 ... 890: user/birilerinin 'dize hata çıktısının bir parçası olarak. – smitelli

+0

Tamamen kullanıcı, 'kullanıcı-kendine' alma iznine sahip değildir. : -/ – Jason

33

Kullanım GetCallerIdentity: Diğer API aksine
aws sts get-caller-identity

/CLI her zaman ne olursa olsun IAM izinler, çalışacak çağırır.

{ 
    "Account": "123456789012", 
    "UserId": "AR#####:#####", 
    "Arn": "arn:aws:sts::123456789012:assumed-role/role-name/role-session-name" 
} 

Tam ARN rolünün türüne bağlı olacaktır, ama çoğu zaman (insan) kullanıcının adını içerir:

aşağıdaki biçimde çıktıyı alacak.

Standart AWS CLI error codes, başarı için 0 ve kimlik bilginiz yoksa 255 değerini kullanır.

+2

Bu harika bir cevap, ancak MFA kullanıyorsanız, dışarı bak - daha karmaşık. MFA ile, farklı çalışma geçici kimlik bilgilerini (ii) almak için bir MFA belirteci ile birlikte çalışma kimlik bilgilerini (i) kullanmanız gerekir ve bu çözümle, (i) veya (ii) kimlik bilgileri için aynı sonuçları alırsınız. –

+0

@MarkChackerian Bu her zaman böyle değildir. MFA, [Trek10 politikası] kullanılarak uygulanmakta olan bir kullanıcı oluşturdum (https://www.trek10.com/blog/improving-the-aws-force-mfa-policy-for-IAM-users/).MFA oturum belirteci etkin değil, eğer iws get-kullanıcı -profile test-mfa' çalıştırırsam, şunu alırım: 'GetUser işlemini çağırırken bir hata oluştu (AccessDenied). Ancak, "aws sts-caller-identity --profile test-mfa" çıktıları (benzer şekilde, MFA oturumu etkin olmayan bir simge olmadan), 'test-mfa'nın Hesabı, ARN ve UserId. – Ville

İlgili konular