Terraform Infrastructure as Code · Урок

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

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

Урок 3 из 411 шагов

«Управление корзинами S3 и IAM» — бесплатный урок Terraform Infrastructure as Code на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Terraform Infrastructure as Code, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Terraform Infrastructure as Code содержит 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 — все это определяется в виде кода!

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

Можно начать бесплатно

Изучай Terraform Infrastructure as Code с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
12
Уроки
48

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

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

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

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

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

Нужен ли мне опыт, чтобы начать Terraform Infrastructure as Code?

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

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

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

Можно ли писать и запускать код в этом уроке Terraform Infrastructure as Code?

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

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

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