일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- opt/anaconda3/bin/jupyter_mac.command
- Linux
- terraform with aws
- 직무분리
- AWS실습
- 리눅스기초명령어
- aws기초
- cissp
- 리눅스명령어
- linux명령어
- 쉘스크립트
- GDPR
- terraform기초
- blue/green배포
- 리눅스기초
- AWS CI/CD
- aws
- Cissp sdlc
- AWS구축
- AWS 공격테스트
- aws terraform
- 리눅스
- aws따라하기
- AWS배포자동화
- terraform기본
- 최소권한
- aws기본
- AWS CodeDeploy
- terraform따라하기
- 주피터노트북 설치
ysuekkom의 IT study note
[Terraform 기초] S3 Bucket 및 IAM Role, Policy 생성하기 with AWS 본문
[Terraform 기초] S3 Bucket 및 IAM Role, Policy 생성하기 with AWS
ysuekkom 2023. 4. 26. 19:44S3 Bucket 생성과 IAM User, Group, Role, Policy 생성 실습 따라하기
개인적인 사정으로 포스팅을 할 수 없었다. 다시금 천천히 기초부터 패턴까지 작성해보려고한다!
오랜만에 티스토리로 다시 돌아왔는데, 누군가에게 내 CISSP 포스팅이 도움이 되었던 것 같다. 뿌듯하면서 고마운 기분!
기초부터 복습할 겸 꾸준히 다시 올려보겠습니다~~!!
이어보기
https://ysuekkom8915.tistory.com/25
https://ysuekkom8915.tistory.com/26
S3 버킷 생성하기
S3 버킷 이름은 전 세계적으로 유일해야한다, 만약 이름이 겹치게 되면
terraform plan 시, 아래와 같은 에러 메시지가 뜨게 된다.
S3
S3(Amazon Simple Storage Service)는 객체 스토리스 서비스로, 확장성과 가용성 그리고 보안성능을 제공한다. 기업별 운영하는 서비스의 형태와 운영 방식에 따라, 데이터를 저장하고 액세스 할 수 있는 다양한 선택지를 제공한다. 비용 효율과 관리 용이성을 모두 가져갈 수있다.
S3에 대한 자세한 내용(아카이브, 데이터 액세스 방식, 그에따른 요금 부과 등)은 추후 다른 포스팅에서 다루도록 하겠다.
일단 코드로 S3를 생성해보자.
resource "aws_s3_bucket" "s3b" {
bucket = "terra-s3-s3b"
tags = {
Name = "terra-test-s3-bucket"
}
}
terraform apply 후, 매니지먼트에서 생성된 버킷을 확인해보자.
code로 작성한 그대로, bucket name이 terra-s3-s3b로 생성된 것을 확인 할 수 있다.
다음으로 IAM 사용자와 사용자 그룹, 그리고 사용자 정책 생성 실습을 진행해보자.
1. IAM User Name이 ysuekkom.m인 사용자를 생성
2. IAM User Policy를 설정(name은 super-admin)
3. dev-ysuekkom 이름의 사용자 그룹을 생성
4. EC2와 S3에 IAM Role 설정
5. Instance Profile 설정
// **Create IAM User & IAM Group
resource "aws_iam_user" "ysuekkom_m" {
name = "ysuekkom.m"
}
// **Create User Policy
resource "aws_iam_user_policy" "ysuekkom_devops" {
name = "super-admin"
user = aws_iam_user.ysuekkom_m.name
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"*"
],
"Resource": [
"*"
]
}
]
}
EOF
}
resource "aws_iam_group" "dev-ysuekkom" {
name = "dev-ysuekkom"
}
// **Create IAM group membership
resource "aws_iam_group_membership" "dev-ysuekkom" {
name = aws_iam_group.dev-ysuekkom.name
users = [
aws_iam_user.ysuekkom_m.name
]
group = aws_iam_group.dev-ysuekkom.name
}
// **Create IAM role for ec2
resource "aws_iam_role" "basic" {
name = "basic-iam-role"
path = "/"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
}
resource "aws_iam_role_policy" "basic_s3" {
name = "basic-s3-download"
role = aws_iam_role.basic.id
policy = <<EOF
{
"Statement": [
{
"Sid": "AllowAppArtifactsReadAccess",
"Action": [
"s3:GetObject"
],
"Resource": [
"*"
],
"Effect": "Allow"
}
]
}
EOF
}
resource "aws_iam_instance_profile" "basic" {
name = "basic-profile"
role = aws_iam_role.basic.name
}
apply 후, 매니지먼트에서 사용자 그룹 dev-ysuekkom에 속하여 super-admin인 ysuekkom.m의 사용자가 생성된 것을 확인 할 수 있다.
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_group
https://terraform101.inflearn.devopsart.dev/advanced/
'DevOps > terraform' 카테고리의 다른 글
[Terraform 따라하기] Terraform Backend 관리, remote state file & output으로 참조하기 (0) | 2023.04.27 |
---|---|
[terraform 기초] 라우팅테이블 설정하기 (0) | 2022.12.18 |
[terraform 따라하기] IaC로 AWS 인프라 구축하기 (0) | 2022.12.15 |