2016-04-04 16 views
0

Çoğunlukla IP veya VPC veya VPCE gibi ayrı seçeneklerle nasıl kısıtlanacağını gösteren bazı kaynaklara dayanarak, bu benim kullanmaya çalıştığım şeydir. iş? Sadece kamu IP'den S3 grubuna erişimi açmaya çalışıyorumS3 Kova güvenliği, açık IP ve VPC bitiş noktasıyla kısıtlı erişim kısıtlaması

: "12.34.56.78/32" ve VPC bitiş noktası: "vpce xxxxxxxx"

{ 
    "Version": "2008-10-17", 
    "Id": "S3Policy-Restrict-Access", 
    "Statement": [ 
    { 
     "Sid": "IPDeny", 
     "Effect": "Deny", 
     "Principal": { 
     "AWS": "*" 
     }, 
     "Action": "s3:*", 
     "Resource": "arn:aws-us-gov:s3:::myrestrict-access-test/*", 
     "Condition": { 
     "NotIpAddress": { 
      "aws:SourceIp": [ 
      "12.34.56.78/32" 
      ] 
     }, 
     "StringNotEquals": { 
      "aws:sourceVpce": "vpce-xxxxxxxx" 
     } 
     } 
    } 
    ] 
} 
+1

Denediniz mi? Aws: sourceIp, VPC bitiş noktası trafiğinde geçersiz bir test olduğundan ve "aws: sourceVpce", VPC olmayan uç nokta trafiğinde geçersiz bir test olduğundan * string * 'StringNotEqualsIfExists' ve' NotIpAddressIfExists' kullanılmalıdır. Bulunmayan değerler, ne eşit değildir, ne de eşit değildir ve bu koşulların nasıl değerlendirildiği, açıkça tanımlanmış gibi görünmemektedir (ya da başarısızlığa uğrayacaktır, bu nedenle, '* IfExists' testlerinin kullanılabilirliği). –

+0

Her iki seçenek de StringNotEqualsIfExists + NotIpAddressIfExists ve StringNotEquals + NotIpAddress kullanırken düzgün çalışıyor gibi görünüyor. * IfExists ekleyerek uygun çözüm olacağını kabul ediyorum. –

+0

Bu dokümanı kontrol etmelisiniz: http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Conditions_IfExists – Robert

cevap

1

cevap ...IfExists Condition Operators

ilgili AWS belgelere olduğunu

IfExists öğesini, Null koşulu dışında herhangi bir koşul operatörünün sonuna ekleyebilir - örneğin, StringLikeIfExists. Sen politika anahtar isteği kapsamında varsa bu" söylemek yapmak, süreç olarak politika belirtilen anahtar yoksa, ben umurumda anahtar ;. Karşılaştırmayı başarısızlığa uğratma yokluğundan dolayı. " İfadedeki diğer durum öğelerinin hala bir eşleşme olmamasına, sonuçlanmasına karşın, ... seçeneğinin işaretlenmesi durumunda eksik bir anahtarın çıkmasına neden olabilir.

Örnek kullanarak IfExists

Birçok koşul tuşları kaynağın belirli bir türü hakkında bilgi açıklamak ve kaynağın bu tür erişirken ürünlerinden ibarettir. Bu koşul anahtarları, diğer kaynak türlerinde mevcut değildir. Bu ilkesi, yalnızca bir kaynak türü için geçerli olduğunda bir soruna neden olmaz. Ancak, numaralı tek bir deyimin birden çok kaynak türüne uygulanabileceği durumlar vardır; örneğin, bildiriminin birden çok hizmetten gelen eylemlere başvurduğu veya bir hizmet içinde verilen bir eyleminin, aynı hizmet içinde çeşitli farklı kaynak türleri eriştiğinde olduğu gibi. politika metninde Durumu eleman bildirinin "Etkisi" geçerli olmadığını böyle başarısız olmasına neden olabilir sadece bir politika açıklamada kaynakların geçerli olduğu bir durum anahtarına dahil bu tür durumlarda,.

{ 
    "Version": "2012-10-17", 
    "Statement": { 
    "Sid": "THISPOLICYDOESNOTWORK", 
    "Effect": "Allow", 
    "Action": "ec2:RunInstances", 
    "Resource": "*", 
    "Condition": {"StringLike": {"ec2:InstanceType": [ 
     "t1.*", 
     "t2.*", 
     "m3.*" 
    ]}} 
    } 
} 

önceki politika amacı t1, t2 ya da m3 tip herhangi bir örneğini başlatmak için kullanıcı sağlamaktır. Ancak, bir örnek 'un başlatılması, aslında örneğinin kendisine ek olarak birçok kaynağa erişmeyi gerektirir; örneğin, görüntüler, anahtar çiftleri, güvenlik grupları, vb. tüm ifadesi, örneği başlatmak için gereken tüm kaynaklara göre ile değerlendirilir. Bu ek kaynaklar, ec2: InstanceType koşul anahtarına sahip değildir, bu nedenle StringLike denetimi başarısız olur ve kullanıcısına herhangi bir örnek türünü başlatma özelliği verilmez. Bunun için adresine, bunun yerine StringLikeIfExists koşul operatörünü kullanın. Bu şekilde, test yalnızca durum tuşu varsa gerçekleşir. EC2 "kaynak denetleniyor varsa bir sahiptir ': Sen Aşağıdaki okuyabilir t1 instancetype' anahtar değeri ile başlar yalnızca koşul tuşuna basın, sonra eyleme izin". "," t2. "veya" m3. * ". Kaynak olarak işaretlenmişse, bu koşul anahtarının olmaması durumunda endişelenmeyin."

{ 
    "Version": "2012-10-17", 
    "Statement": { 
    "Effect": "Allow", 
    "Action": "ec2:RunInstances", 
    "Resource": "*", 
    "Condition": {"StringLikeIfExists": {"ec2:InstanceType": [ 
     "t1.*", 
     "t2.*", 
     "m3.*" 
    ]}} 
    } 
} 

Sen şartı olmalıdır:

"Condition": { 
     "NotIpAddressIfExists": { 
      "aws:SourceIp": [ 
      "12.34.56.78/32" 
      ] 
     }, 
     "StringNotEqualsIfExists": { 
      "aws:sourceVpce": "vpce-xxxxxxxx" 
     } 
     } 

Açıklama

politikalar tanımlayarak, istek VPC Endpoint aracılığıyla geliyorsa, kaynak IP anahtar Benzer şekilde, istek VPC bitiş noktası dışında geliyorsa, VPC r mutlu tuşlar mevcut değildir. IfExists koşullu kullanılabilir anahtarları değerlendirmek için kullanılmalıdır.

İlgili konular