Spec-Zone.ru › Chef 18

Ресурс aws_s3_bucket

[редактировать на GitHub]

Используйте ресурс аудита 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 Grants, описывающий разрешения на доступ к ведру.
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. Для группы «AllUsers» существует разрешение в ACL ведра
  2. Для группы «AuthenticatedUsers» существует разрешение в ACL ведра
  3. В политике ведра есть эффект «Разрешить» и принципал «*»

Примечание: этот ресурс не обнаруживает небезопасные 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