Управление корзинами 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 — локальная установка не требуется.
Все уроки этого курса
- Настройка поставщика AWS
- Подготовка экземпляров EC2
- Управление корзинами S3 и IAM
- Настройка VPC и сети