2016-08-10 1 views
1

Я отлаживаю ошибку AccessDenied при использовании моего ID2 экземпляра EC2 в качестве условия для политики ведра. Следующая политика Ковш выдает ошибку Access Denied, когда я пытаюсь сделать простой PutObject:Почему моя политика в S3 Bucket работает с использованием IP, но не ARN из моих экземпляров?

{ 
    "Statement": [ 
    { 
     "Effect": "Deny", 
     "Principal": "*", 
     "Action": "*", 
     "Resource": "arn:aws:s3:::ACTUAL-BUCKET-NAME/*", 
     "Condition": { 
     "ArnNotEquals": { 
      "aws:SourceArn": ["arn:aws:ec2:region:ACTUAL-ACCOUNT-ID:instance/ACTUAL-INSTANCE_ID"] 
     } 
     } 
    }, 
    { 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": [ 
     "s3:GetObject", "s3:GetObjectVersion", "s3:PutObject", 
     "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:PutObjectAcl", 
     "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", 
     "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", 
     "s3:GetObjectTorrent", "s3:GetObjectVersionTorrent", "s3:RestoreObject" 
     ], 
     "Resource": "arn:aws:s3:::ACTUAL-BUCKET-NAME/*", 
     "Condition": { 
     "ArnEquals": { 
      "aws:SourceArn": ["arn:aws:ec2:region:ACTUAL-ACCOUNT-ID:instance/ACTUAL-INSTANCE_ID"] 
     } 
     } 
    } 
    ] 
} 

Однако, если изменить условие, чтобы быть IP экземпляра, я больше не получаю мои ошибки, и я в состоянии до PutObject весь день.

{ 
    "Statement": [ 
    { 
     "Effect": "Deny", 
     "Principal": "*", 
     "Action": "*", 
     "Resource": "arn:aws:s3:::ACTUAL-BUCKET-NAME/*", 
     "Condition": { 
     "NotIpAddress": { 
      "aws:SourceIp": "ACTUAL-IP-ADDRESS" 
     } 
     } 
    }, 
    { 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": [ 
     "s3:GetObject", "s3:GetObjectVersion", "s3:PutObject", 
     "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:PutObjectAcl", 
     "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", 
     "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", 
     "s3:GetObjectTorrent", "s3:GetObjectVersionTorrent", "s3:RestoreObject" 
     ], 
     "Resource": "arn:aws:s3:::ACTUAL-BUCKET-NAME/*", 
     "Condition": { 
     "IpAddress": { 
      "aws:SourceIp": "ACTUAL-IP-ADDRESS" 
     } 
     } 
    } 
    ] 
} 

Команда, я использую для тестирования с является

echo "hi" | aws s3 cp - s3://ACTUAL-BUCKET-NAME/ACTUAL-FILE-NAME --no-sign-request --region us-east-1 

То, что я пытался

Я попытался изменить мое состояние к ArnLike без каких-либо лучших результатов ,

Я попытался модифицировать ARN, потому что я не уверен, если мне нужно заменить область или ACCOUNTID с фактическими значениями, или если я могу оставить их как «переменные» - но опять же, не сделал дело.

ответ

1

Как правило, вы не предоставляете сервер EC2 доступ к ведро S3. Обычно вы это делаете, назначая соответствующую роль IAM на сервер EC2 вместо использования политики ведра S3.

Если вам абсолютно необходимо выполнить это с помощью политики ведра, я бы рекомендовал прочитать ответы this question.

+0

Мне абсолютно нужно, к сожалению. – Rabbott