AWS Komut Satırı Araçları için kimlik bilgileri nasıl test edilir


149

awsYardımcı programa iletilebilen bir komut / alt komut var mı? 1) ~/.aws/credentialsdosyadaki kimlik bilgilerinin geçerli olduğunu doğrulayabilir ve 2) kimlik bilgilerinin hangi kullanıcıya ait olduğunu gösteren bazı göstergeler verebilir mi? IAM veya belirli bir hizmet için izinleri olan kullanıcı hakkında herhangi bir varsayım yapmaz genel bir şey arıyorum.

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


3
Bunun serverfault.com'da daha iyi sorulmasını önerebilir miyim ? Yığın Taşması özellikle programlama soruları içindir.
Tripp Kinetiği

4
@TrippKinetics Evet, nereye sormam gerektiğine karar verdim. Aklımda, sorunun eti, sunucuları kendi başına yönetmek yerine programlı olarak bir API'yi sorgulamakla ilgiliydi.
smitelli

Yanıtlar:


221

GetCallerIdentity kullanın :
aws sts get-caller-identity

Diğer API / CLI çağrılarının aksine, IAM izinlerinizden bağımsız olarak her zaman çalışır.

Aşağıdaki biçimde çıktı alırsınız:

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

Tam ARN biçimi kimlik bilgilerinin türüne bağlı olacaktır, ancak genellikle (insan) kullanıcının adını içerir.

Başarı durumunda 0 ve kimlik bilgileriniz yoksa 255 veren standart AWS CLI hata kodlarını kullanır .


5
Bu harika bir cevap, ancak MFA kullanıyorsanız, dikkat edin - daha karmaşık. MFA ile, farklı çalışma geçici kimlik bilgileri (ii) elde etmek 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.
Mark Chackerian

3
@MarkChackerian Bu her zaman böyle değildir. Trfa10 politikası kullanılarak MFA uygulanmakta olan bir kullanıcı oluşturdum . MFA oturumu aktif değil belirteci ile ben yürütmek eğer aws iam get-user --profile test-mfa, ben alıyorum: An error occurred (AccessDenied) when calling the GetUser operation. Ancak, aws sts get-caller-identity --profile test-mfa(benzer şekilde, MFA oturum belirteci etkin değilken) test-mfa's Hesabı, ARN ve UserId çıktıları .
Ville

54

aws iam get-userKullanıcının iamayrıcalıkları olması koşuluyla, (geçerli IAM Kullanıcısı) kim olduğunuzu (mevcut IAM Kullanıcısı) ayrıntılı bir şekilde anlatabiliriz .

İşlemi gerçekleştirmek için gerekli yapılandırma / krediye sahip olup olmadığınızı söyleyen --dry-runbayrağını destekleyen birkaç CLI çağrısı vardır aws ec2 run-instances.

Ayrıca, --auth-dry-runkomutu çalıştırmadan komut için gerekli izinlere sahip olup olmadığınızı da kontrol eder. Gerekli izinlere sahipseniz, komut DryRunOperation döndürür; aksi halde Yetkisiz Çalışma'yı döndürür. [ AWS Belgelerinden - Ortak Seçenekler ]

Kimin hangi anahtara atandığını görmek için Yönetim Konsolu'ndan IAM Erişim Anahtarlarını listeleyebilirsiniz.

Hangi kullanıcının / rolün hangi ayrıcalıklara sahip olduğunu anlamanın en iyi yolu IAM Politika Simülatörünü kullanmaktır .


16
İronik olarak, testi bir AccessDeniedhata var gibi çalıştırdım - arn:aws:iam::123...890:user/somebodyhata çıktısının bir parçası olarak tam dizeyi dahil etti .
smitelli

7
Tamamen mümkün olan kullanıcının kendi başına 'kullanıcı alma' izni yoktur. : - /
Jason

Evet, bu durum var. Kullanıcı ARN'sinin yanındaki AWS Konsolu'nda, N / A gösterilir ve fareyle üzerine gelindiğinde "Kullanıcı arn: aws: iam: ...: kullanıcı / steve'nin iam: GetUser on source: user steve"
Steve Bennett
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.