2015-10-22 18 views
9

Bazı verileri S3'te saklamak ve yalnızca belirli bir IAM rolüne sahip belirli bir kullanıcının veya bunları kullanabilmeleri için EC2 örneklerine izin vermek istiyoruz. Maalesef bunu yaparken biraz sorun yaşıyoruz. Biz yerel makine veya herhangi bir EC2 örneğinden, iyi çalışıyor anahtar kullanıcılarla Bucket (Boto kullanarak) eriştiğinizde Belirli IAM Rolü için S3 Kepçesine erişimi nasıl kısıtlarım?

Bu

{ 
"Version": "2012-10-17", 
"Id": "SamplePolicy", 
"Statement": [ 

    { 
     "Sid": "Stmt1331136294179", 
     "Effect": "Deny", 
     "NotPrincipal": { 
      "AWS": [ 
       "arn:aws:iam::our-account-number:user/the-user", 

       "arn:aws:iam::our-account-number:role/the-role" 
      ] 
     }, 
     "Action": "s3:*", 
     "Resource": "arn:aws:s3:::the-bucket/*" 
    }, 
     { 
     "Sid": "Stmt1331136364169", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": [ 
       "arn:aws:iam::our-account-number:user/the-user", 
       "arn:aws:iam::our-account-number:role/the-role" 
      ] 
     }, 
     "Action": "s3:*", 
     "Resource": "arn:aws:s3:::the-bucket/*" 
    } 

]} 

gibi kova üzerine bir politika ayarlayın. Biz Boto gelen kova eriştiklerinde ben örneği ben de politikayı kaldırmak denedim

curl http://169.254.169.254/latest/meta-data/iam/info/ 
{ 
    "Code" : "Success", 
    "LastUpdated" : "2015-10-22T09:09:31Z", 
    "InstanceProfileArn" : "our-account-number:instance-profile/the-role", 
    "InstanceProfileId" : "instance-rpofile-id" 
} 

doğru IAM bir role sahip olduğunu teyit ettik

ClientError: An error occurred (AccessDenied) when calling the GetObject operation: Access Denied

aldığımız

Ama kovadan, gerçekten tekrar erişilebilir hale getirir. Bunu nasıl ele alacağınıza dair bir fikriniz var mı?

Burada paylaşılan örnek, hata ayıklama için yaptığım basitleştirilmiş bir sürümdür. Üretimde istediğimiz, nesnenin KMS ile şifrelenmesini zorluyor ve anahtar üzerinde bir erişim politikası var. Bu çözümü çok seviyoruz ve yapabiliyorsak bunu korumayı tercih ediyoruz.

Teşekkür

ben defalarca yaptık bununla
+0

Eğer rol politikasını gösterebilir misin? –

+0

'kodu { "Sürüm": "2012/10/17", "Beyan": [ { "Etkisi": "İzin ver", "Eylem": "s3: *" "Kaynak": "*" } ] } ' –

cevap

5

Bir hata size kova kendisi (hayır/*) ... üzerine gereken bazı izinlere için lütfen ARN

içerir ve bazı İhtiyacınız onun içerikleri.

Ben şu anda hangi kullanma girişiminde ediyorum

, sadece burada mesele NotPrincipal için belirli bir oturum rolünü sağlamak zorunda olmasıdır

"Resource": ["arn:aws:s3:::the-bucket/*", "arn:aws:s3:::the-bucket"] 
3

... gibi pek bir şey ikisini de içerir. Ne yazık ki, InstanceProfiles (veya Lambda) kullanırken, bu oturum rolü dinamiktir. AWS, ana alanda joker karakterleri desteklemez, bu nedenle NotPrincipal'i bir InstanceProfile ile kullanmak imkansızdır.

bilinen bir sınırlama olarak kabul burada

Bkz AWS destek yanıtı : https://forums.aws.amazon.com/message.jspa?messageID=740656#740656

İlgili konular