aws_s3_bucket ресурс
Используйте aws_s3_bucket ресурс аудита InSpec для проверки свойств отдельного ведра AWS.
Синтаксис
Блок aws_s3_bucket ресурса объявляет ведро по имени и перечисляет тесты, которые должны быть выполнены.
describe aws_s3_bucket(bucket_name: 'test_bucket') do
it { should exist }
it { should_not be_public }
end
describe aws_s3_bucket('test_bucket') do
it { should exist }
end
Параметры
bucket_name (обязательно)
Этот ресурс принимает единственный параметр — имя ведра S3, которое однозначно идентифицирует ведро. Его можно передать как строку или как bucket_name: 'value' пару ключ-значение в хэше.
См. также документацию AWS по S3-ведром.
Свойства
| Свойство | Описание |
|---|---|
| region | Регион ведра. Регион переопределяется на основе местоположения, возвращенного из S3 |
| bucket_acl | Массив AWS-разрешений, описывающих предоставление разрешений на ведро. |
| bucket_policy | Документ политики IAM, контролирующий доступ к ведру. |
| bucket_lifecycle_rules | Правила политики жизненного цикла, определяющие действия, которые S3 будет выполнять для всех объектов (или подмножества объектов) в течение их жизненного цикла. |
| tags | Хэш с каждой парой ключ-значение, соответствующей тегу, связанному с сущностью |
Примеры
Проверка ACL на уровне ведра
describe aws_s3_bucket('test_bucket') do
its('bucket_acl.count') { should eq 1 }
end
Проверка наличия политики ведра
describe aws_s3_bucket('test_bucket') do
its('bucket_policy') { should be_empty }
end
Проверка, кажется ли ведро открытым для публичного доступа
describe aws_s3_bucket('test_bucket') do
it { should_not be_public }
end
Проверка правильности установленного региона
describe aws_s3_bucket('test_bucket') do
its('region') { should eq 'us-east-1' }
end
Проверка ACL ведра на правильность предоставления прав
bucket_acl = aws_s3_bucket('my-bucket').bucket_acl
# Look for grants to "AllUsers" (that is, the public)
all_users_grants = bucket_acl.select do |g|
g.grantee.type == 'Group' && g.grantee.uri =~ /AllUsers/
end
# Look for grants to "AuthenticatedUsers" (that is, any authenticated AWS user - nearly public)
auth_grants = bucket_acl.select do |g|
g.grantee.type == 'Group' && g.grantee.uri =~ /AuthenticatedUsers/
end
Проверка всех ведер
aws_s3_buckets.bucket_names.each do |bucket_name|
describe aws_s3_bucket(bucket_name) do
it { should have_default_encryption_enabled }
end
end
Проверка ведер в определенном регионе
aws_s3_buckets.bucket_names.each do |bucket_name|
if aws_s3_bucket(bucket_name: bucket_name).region == region
describe aws_s3_bucket(bucket_name) do
it { should have_default_encryption_enabled }
end
end
end
Проверка наличия политики ведра, требующей использования HTTPS для запросов
describe aws_s3_bucket('test_bucket') do
it { should have_secure_transport_enabled }
end
Сопоставители
У этого ресурса аудита InSpec есть следующие специальные сопоставители. Полный список доступных сопоставителей см. на странице сопоставителей.
be_public
Сопоставитель be_public проверяет, имеет ли ведро потенциально небезопасные контрольные механизмы доступа. Этот сопоставитель высокого уровня обнаруживает несколько небезопасных условий, которые могут быть расширены в будущем. В настоящее время сопоставитель сообщает о небезопасном ведре, если выполнено любое из следующих условий:
- Существует разрешение ACL ведра для группы «AllUsers»
- Существует разрешение ACL ведра для группы «AuthenticatedUsers»
- Политика ведра имеет действие «Allow» и принципала «*»
Примечание: Этот ресурс не обнаруживает небезопасные ACL объектов.
it { should_not be_public }
have_access_logging_enabled
Сопоставитель have_access_logging_enabled проверяет, включен ли журнал доступа для ведра s3.
it { should have_access_logging_enabled }
have_default_encryption_enabled
Сопоставитель have_default_encryption_enabled проверяет, включено ли шифрование по умолчанию для ведра s3.
it { should have_default_encryption_enabled }
have_versioning_enabled
Сопоставитель have_versioning_enabled проверяет, включена ли версия для ведра s3.
it { should have_versioning_enabled }
have_secure_transport_enabled
Сопоставитель have_secure_transport_enabled проверяет, включена ли политика ведра, которая явно запрещает запросы через HTTP, для ведра s3.
it { should have_secure_transport_enabled }
Разрешения AWS
Вашему Принципалу потребуются s3:GetBucketAcl, s3:GetBucketLocation, s3:GetBucketLogging, s3:GetBucketPolicy, и s3:GetEncryptionConfiguration действия, установленные на разрешение.
Вы можете найти подробную документацию по Действиям, ресурсам и ключам условий для Amazon S3.
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/aws_s3_bucket/