Spec-Zone.ru › Chef 16

aws_s3_bucket ресурс

[править на GitHub]

Используйте 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 проверяет, имеет ли ведро потенциально небезопасные контрольные механизмы доступа. Этот сопоставитель высокого уровня обнаруживает несколько небезопасных условий, которые могут быть расширены в будущем. В настоящее время сопоставитель сообщает о небезопасном ведре, если выполнено любое из следующих условий:

  1. Существует разрешение ACL ведра для группы «AllUsers»
  2. Существует разрешение ACL ведра для группы «AuthenticatedUsers»
  3. Политика ведра имеет действие «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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API