Gerenciamento de Buckets S3 e IAM
Aprenda a provisionar e configurar buckets de armazenamento S3 e gerenciar recursos do AWS Identity and Access Management (IAM) com o Terraform.
Gerenciamento de Buckets S3 e IAM é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.
S3 e Terraform: Armazenamento na Nuvem
O Amazon S3 (Simple Storage Service) oferece armazenamento de objetos altamente escalável, durável e disponível. Ele é perfeito para cópias de segurança, sites estáticos e arquivamento de dados.
Gerenciar buckets do S3 com o Terraform traz vários benefícios:
- Automação: Crie e configure buckets programaticamente.
- Controle de versões: Acompanhe as alterações nas configurações dos seus buckets.
- Consistência: Garanta que todos os ambientes tenham configurações do S3 idênticas.
Seu Primeiro Bucket do S3
Vamos definir um bucket simples do S3. O recurso aws_s3_bucket é usado para isso.
Os nomes dos buckets devem ser exclusivos globalmente em todas as contas da AWS. Escolha um nome exclusivo!
Tente executar este exemplo:
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
}Nomeação de Buckets e Região
Ao criar um bucket do S3, lembre-se destes pontos importantes:
- Exclusividade global: Os nomes dos buckets devem ser exclusivos globalmente em todas as contas da AWS.
- Região: Embora os nomes sejam globais, o bucket fica localizado em uma região específica da AWS (definida pela configuração do seu provedor da AWS).
- Regras de nomeação: Os nomes devem estar em letras minúsculas, ter de 3 a 63 caracteres e podem conter hífens.
Escolher uma boa convenção de nomenclatura é essencial para manter a organização e a clareza.
Segurança e Recursos do S3
O S3 oferece recursos como controle de versões, para manter várias versões de um objeto, e bloqueios de acesso público, para aumentar a segurança. Para a maioria dos buckets, é fundamental bloquear o acesso público por padrão.
Este exemplo configura o controle de versões e garante que o acesso público esteja bloqueado.
Tente executar este exemplo:
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: Identidade e Acesso
O AWS IAM (Identity and Access Management) é um serviço web que ajuda você a controlar com segurança o acesso aos recursos da AWS. Ele é fundamental para a segurança.
Com o IAM, você pode:
- Gerenciar usuários e seus acessos programático e pelo console.
- Conceder permissões detalhadas a recursos específicos da AWS.
- Controlar quem pode fazer o quê na sua conta da AWS.
O Terraform permite definir e gerenciar recursos do IAM assim como buckets do S3.
Provisionamento de um Usuário do IAM
Vamos criar um novo usuário do IAM usando o Terraform. Um usuário do IAM representa uma pessoa ou um serviço que interage com a AWS.
Esse usuário ainda não terá nenhuma permissão; vamos adicioná-las em seguida.
Tente executar este exemplo:
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
}Entendendo as Políticas do IAM
As políticas do IAM são documentos que definem permissões. Elas especificam quais ações são permitidas ou negadas em quais recursos e sob quais condições.
As políticas são escritas em JSON e podem ser associadas a usuários, grupos ou funções.
- Políticas baseadas em identidade: Associadas a uma identidade do IAM (usuário, grupo ou função).
- Políticas baseadas em recursos: Associadas a um recurso (como um bucket do S3 ou uma fila do SQS).
Concedendo Permissões do S3
Agora, vamos criar uma política que concede ao nosso usuário do IAM acesso somente leitura a um bucket específico do S3 e, em seguida, associá-la.
O recurso aws_iam_policy define a política, e aws_iam_user_policy_attachment associa-a ao usuário.
Tente executar este exemplo:
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
}Organização com Grupos do IAM
Para facilitar o gerenciamento, especialmente quando há muitos usuários, você pode usar grupos do IAM. Um grupo é uma coleção de usuários do IAM.
Em vez de associar políticas a usuários individuais, você pode associá-las a um grupo, e todos os usuários desse grupo herdarão essas permissões.
Isso simplifica o gerenciamento de permissões e facilita seguir o princípio do menor privilégio.
Verificação Rápida: S3 e IAM
Quais das afirmações a seguir sobre o gerenciamento de buckets do AWS S3 e usuários e políticas do IAM com o Terraform são TRUE?
Recapitulação: S3 e IAM
Excelente trabalho! Nesta lição, você aprendeu a gerenciar buckets do AWS S3 e recursos do IAM usando o Terraform.
- Provisionamos buckets do S3, configuramos o controle de versões e bloqueamos o acesso público.
- Criamos usuários do IAM e associamos políticas personalizadas para conceder permissões específicas.
- Agora você entende a importância do S3 para armazenamento e do IAM para o controle seguro de acesso na AWS, tudo definido como código!
Em seguida, vamos explorar técnicas avançadas de gerenciamento de estado.
Perguntas Frequentes
A aula “Gerenciamento de Buckets S3 e IAM” é grátis?
Sim — o texto completo de “Gerenciamento de Buckets S3 e IAM” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.
O que vou aprender em “Gerenciamento de Buckets S3 e IAM”?
Aprenda a provisionar e configurar buckets de armazenamento S3 e gerenciar recursos do AWS Identity and Access Management (IAM) com o Terraform. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar DevOps Bootcamp?
Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Gerenciamento de Buckets S3 e IAM”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de DevOps Bootcamp?
Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Configuração do Provedor AWS
- Provisionamento de Instâncias EC2
- Gerenciamento de Buckets S3 e IAM
- Configurando VPC e redes