Я изучаю AWS, используя LocalStack, в настоящее время изучая политики IAM, в контексте пользователей IAM и сегментов S3, и я сосредоточен на использовании AWS CLI.
Я попытался создать политику, чтобы запретить всем S3 доступ к указанному c пользователю:
{
"comment": "s3-deny-stanley.json",
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "s3:*",
"Principal": { "AWS": "arn:aws:iam::000000000000:user/stanley" },
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
Вот профиль Стэнли:
$ aws --profile=admin_cred --endpoint-url=http://localhost:4593 iam get-user --user-name stanley
{
"User": {
"Path": "/",
"UserName": "stanley",
"UserId": "mnxybnqil4uugewvlq7x",
"Arn": "arn:aws:iam::000000000000:user/stanley",
"CreateDate": "2020-05-01T20:01:30.932000+00:00"
}
}
Я применил политику следующим образом:
$ aws --profile=admin_cred --endpoint-url=http://localhost:4572 s3api put-bucket-policy --bucket my-bucket --policy file://s3-deny-stanley.json
$
Я добавляю файл в свое ведро так:
$ cat << EOF > foo.txt
> hello, world!
> EOF
$
$ aws --profile=admin_cred --endpoint-url=http://localhost:4572 s3 cp ./foo.txt s3://my-bucket/foo.txt
upload: ./foo.txt to s3://my-bucket/foo.txt
Теперь я пытаюсь получить доступ к файлу как Стэнли, но, вопреки моим надеждам, он, похоже, может:
$ aws --profile=stanley --endpoint-url=http://localhost:4572 s3 ls s3://my-bucket/
2020-05-01 14:33:03 14 foo.txt
$ aws --profile=stanley --endpoint-url=http://localhost:4572 s3 cp s3://my-bucket/foo.txt ./foo2.txt
download: s3://my-bucket/foo.txt to ./foo2.txt
$
Может кто-нибудь указать, что не так в моей вышеупомянутой попытке применить политику s3-deny-stanley к my-bucket?
(Извинения Стэнли)
Обновление:
Я проверил, что политика прикреплена так:
$ aws --profile=admin_cred --endpoint-url=http://localhost:4572 s3api get-bucket-policy --bucket my-bucket
{
"Policy": "{\n \"comment\": \"s3-deny-stanley.json\",\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Deny\",\n \"Action\": \"s3:*\",\n \"Principal\": { \"AWS\": \"arn:aws:iam::000000000000:user/stanley\" },\n \"Resource\": \"arn:aws:s3:::my-bucket/*\"\n }\n ]\n}\n\n"
}
Обновление :
Обновлен Политика удаления «комментария», следующим образом:
$ cat ./s3-deny-stanley.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "s3:*",
"Principal": { "AWS": "arn:aws:iam::000000000000:user/stanley" },
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
Из-за предосторожности я удалил свое оригинальное ведро, заново создал его, применил обновленный p и повторил попытку доступа Стэнли: результаты были идентичны тем, которые были описаны первоначально.