Ресурс aws_s3_bucket_object
Используйте ресурс аудита InSpec aws_s3_bucket_object для проверки свойств отдельного объекта в AWS-бакете.
Каждый объект S3 имеет ‘ключ’, который можно рассматривать как имя объекта S3, уникально его идентифицирующее.
Синтаксис
Блок ресурса aws_s3_bucket_object объявляет бакет и ключ объекта по имени, а затем перечисляет тесты, которые необходимо выполнить.
describe aws_s3_bucket_object(bucket_name: 'test_bucket', key: 'test_object_key') do
it { should exist }
it { should_not be_public }
end
Параметры
bucket_name (обязательно)
Имя бакета S3, уникально идентифицирующее бакет. Оно должно быть передано как bucket_name: 'value' ключ-значение в хэше.
key (обязательно)
Ключ объекта в бакете S3, уникально идентифицирующий объект бакета. Он должен быть передан как key: 'value' ключ-значение в хэше.
См. также документацию AWS по S3-бакетам.
Свойства
| Свойство | Описание |
|---|---|
| bucket_name | Имя бакета. |
| key | Ключ внутри бакета. |
| content_length | Размер тела в байтах. |
| content_type | Стандартный тип MIME, описывающий формат данных объекта. |
| object_acl | Массив AWS-разрешений, описывающих разрешения на доступ к объекту бакета. |
Доступны также дополнительные свойства. Для получения полного списка см. документацию по API.
Примеры
Проверка разрешений доступа к объекту
describe aws_s3_bucket_object(bucket_name: 'test_bucket', key: 'test_key') do
its('object_acl.count') { should eq 1 }
end
Проверка, что размер объекта в байтах меньше 100000
describe aws_s3_bucket_object(bucket_name: 'test_bucket', key: 'test_key') do
its('content_length') { should be < 1_000_000 }
end
Проверка, что тип объекта — “image/jpeg”
describe aws_s3_bucket_object(bucket_name: 'test_bucket', key: 'test_key') do
its('content_type') { should eq "image/jpeg" }
end
Проверка, доступен ли объект для публичного доступа
describe aws_s3_bucket_object(bucket_name: 'test_bucket', key: 'test_key') do
it { should_not be_public }
end
Сопоставители
У этого ресурса аудита InSpec есть следующие специальные сопоставители. Для получения полного списка доступных сопоставителей (например, exist) посетите нашу страницу сопоставителей.
be_public
Сопоставитель be_public проверяет, есть ли у объекта потенциально небезопасные разрешения доступа. Этот сопоставитель высокого уровня обнаруживает несколько небезопасных условий, которые могут быть улучшены в будущем. В настоящее время сопоставитель сообщает об небезопасном объекте, если выполняются какие-либо из следующих условий:
- Существует разрешение доступа к объекту для группы ‘AllUsers’
- Существует разрешение доступа к объекту для группы ‘AuthenticatedUsers’
Примечание
it { should_not be_public }
Разрешения AWS
Вашему Принципалу потребуются s3:GetObject, и s3:GetObjectAcl действия, установленные на разрешение.
Подробную документацию можно найти по адресу Действия, Ресурсы и Ключи Условий для 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_object/