0Pricing
DevOps Bootcamp · Урок

Управление корзинами S3 и IAM

Научитесь создавать и настраивать корзины хранилища S3, а также управлять ресурсами AWS Identity and Access Management (IAM) с помощью Terraform.

«Управление корзинами S3 и IAM» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

S3 и Terraform: облачное хранилище

Amazon S3 (Simple Storage Service) предоставляет объектное хранилище с высокой масштабируемостью, надежностью и доступностью. Оно отлично подходит для резервного копирования, статических веб-сайтов и архивирования данных.

Управление корзинами S3 с помощью Terraform дает несколько преимуществ:

  • Автоматизация: программное создание и настройка корзин.
  • Контроль версий: отслеживание изменений в конфигурациях корзин.
  • Согласованность: обеспечение одинаковой настройки S3 во всех средах.

Ваша первая корзина S3

Определим простую корзину S3. Для этого используется ресурс aws_s3_bucket.

Имена корзин должны быть глобально уникальными во всех учетных записях AWS. Выберите уникальное имя!

Попробуйте выполнить этот пример:

resource "aws_s3_bucket" "my_unique_bucket" {
  bucket = "my-coddykit-unique-bucket-12345" # Replace with a globally unique name
}

output "bucket_id" {
  value = aws_s3_bucket.my_unique_bucket.id
}

Имена корзин и регионы

При создании корзины S3 помните о следующих важных моментах:

  • Глобальная уникальность: имена корзин должны быть уникальными во всех учетных записях AWS.
  • Регион: хотя имена являются глобальными, сама корзина находится в определенном регионе AWS, заданном в конфигурации провайдера AWS.
  • Правила именования: имена должны состоять из строчных букв, содержать от 3 до 63 символов и могут включать дефисы.

Правильное соглашение об именовании необходимо для организованности и ясности.

Безопасность и возможности S3

S3 предоставляет такие возможности, как версионирование для хранения нескольких версий объекта, и блокировку общего доступа для повышения безопасности. Для большинства корзин крайне важно по умолчанию блокировать общий доступ.

В этом примере настраивается версионирование и обеспечивается блокировка общего доступа.

Попробуйте выполнить этот пример:

resource "aws_s3_bucket" "my_versioned_bucket" {
  bucket = "coddykit-versioned-bucket-98765" # Replace with a unique name
}

resource "aws_s3_bucket_versioning" "my_versioned_bucket_versioning" {
  bucket = aws_s3_bucket.my_versioned_bucket.id
  versioning_configuration {
    status = "Enabled"
  }
}

resource "aws_s3_bucket_public_access_block" "my_versioned_bucket_public_access_block" {
  bucket = aws_s3_bucket.my_versioned_bucket.id

  block_public_acls       = true
  block_public_and_cross_account_access = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

output "bucket_name_versioned" {
  value = aws_s3_bucket.my_versioned_bucket.bucket
}

AWS IAM: идентификация и доступ

AWS IAM (Identity and Access Management) — это веб-служба, которая помогает безопасно управлять доступом к ресурсам AWS. Она играет fundamentalную роль в обеспечении безопасности.

С помощью IAM Вы можете:

  • управлять пользователями и их программным доступом и доступом через консоль;
  • предоставлять детальные разрешения для определенных ресурсов AWS;
  • контролировать, кто и какие действия может выполнять в Вашей учетной записи AWS.

Terraform позволяет определять ресурсы IAM и управлять ими так же, как корзинами S3.

Создание пользователя IAM

Создадим нового пользователя IAM с помощью Terraform. Пользователь IAM представляет человека или службу, взаимодействующую с AWS.

Пока у этого пользователя не будет никаких разрешений; мы добавим их далее.

Попробуйте выполнить этот пример:

resource "aws_iam_user" "coddykit_user" {
  name = "coddykit-app-user"
  path = "/system/"
  tags = {
    Department = "DevOps"
  }
}

output "iam_user_name" {
  value = aws_iam_user.coddykit_user.name
}

output "iam_user_arn" {
  value = aws_iam_user.coddykit_user.arn
}

Понимание политик IAM

Политики IAM — это документы, определяющие разрешения. В них указывается, какие действия разрешены или запрещены для каких ресурсов и при каких условиях.

Политики записываются в формате JSON и могут прикрепляться к пользователям, группам или ролям.

  • Политики на основе идентификаторов: прикрепляются к идентификатору IAM (пользователю, группе или роли).
  • Политики на основе ресурсов: прикрепляются к ресурсу, например корзине S3 или очереди SQS.

Предоставление разрешений S3

Теперь создадим политику, которая предоставит нашему пользователю IAM доступ только для чтения к определенной корзине S3, а затем прикрепим ее.

Ресурс aws_iam_policy определяет политику, а aws_iam_user_policy_attachment связывает ее с пользователем.

Попробуйте выполнить этот пример:

resource "aws_s3_bucket" "policy_target_bucket" {
  bucket = "coddykit-policy-bucket-112233" # Unique name
}

resource "aws_iam_user" "s3_reader_user" {
  name = "coddykit-s3-reader"
}

data "aws_iam_policy_document" "s3_read_only_policy" {
  statement {
    actions = [
      "s3:GetObject",
      "s3:ListBucket"
    ]
    resources = [
      aws_s3_bucket.policy_target_bucket.arn,
      "${aws_s3_bucket.policy_target_bucket.arn}/*"
    ]
  }
}

resource "aws_iam_policy" "s3_read_only" {
  name        = "CoddyKitS3ReadOnlyPolicy"
  description = "Grants read-only access to a specific S3 bucket"
  policy      = data.aws_iam_policy_document.s3_read_only_policy.json
}

resource "aws_iam_user_policy_attachment" "attach_s3_read_only" {
  user       = aws_iam_user.s3_reader_user.name
  policy_arn = aws_iam_policy.s3_read_only.arn
}

output "s3_reader_user_name" {
  value = aws_iam_user.s3_reader_user.name
}

output "s3_read_only_policy_arn" {
  value = aws_iam_policy.s3_read_only.arn
}

Организация с помощью групп IAM

Для более удобного управления, особенно при большом количестве пользователей, можно использовать группы IAM. Группа — это набор пользователей IAM.

Вместо прикрепления политик к отдельным пользователям можно прикрепить политики к группе, и все пользователи этой группы унаследуют соответствующие разрешения.

Это упрощает управление разрешениями и облегчает соблюдение принципа минимальных привилегий.

Быстрая проверка: S3 и IAM

Какие из следующих утверждений об управлении корзинами AWS S3 и пользователями и политиками IAM с помощью Terraform являются TRUE?

Итоги: S3 и IAM

Отличная работа! На этом уроке Вы научились управлять корзинами AWS S3 и ресурсами IAM с помощью Terraform.

  • Мы создали корзины S3, настроили версионирование и заблокировали общий доступ.
  • Мы создали пользователей IAM и прикрепили пользовательские политики, чтобы предоставить определенные разрешения.
  • Теперь Вы понимаете важность S3 для хранения данных и IAM для безопасного управления доступом в AWS — все это определяется в виде кода!

Далее мы подробно рассмотрим продвинутые методы управления состоянием.

Часто задаваемые вопросы

Урок «Управление корзинами S3 и IAM» бесплатный?

Да — полный текст урока «Управление корзинами S3 и IAM» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Управление корзинами S3 и IAM»?

Научитесь создавать и настраивать корзины хранилища S3, а также управлять ресурсами AWS Identity and Access Management (IAM) с помощью Terraform. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Управление корзинами S3 и IAM»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Настройка поставщика AWS
  2. Подготовка экземпляров EC2
  3. Управление корзинами S3 и IAM
  4. Настройка VPC и сети
← Назад к DevOps Bootcamp