1. 기본 환경 구성
이번 실습은 IAM 사용자 계정을 통해 관리 콘솔에 접근하고 액세스 키를 활용해 awscli 도구를 사용합니다.
해당 작업을 수행하지 않았다면 아래 토글을 확장해 작업을 선행하고 본격적인 실습에 들어갑니다.
IAM 사용자 생성 및 액세스 키 생성
1.1. Terraform을 통한 기본 인프라 배포
Terraform을 통한 기본 인프라 배포에 앞서 SSH 키 페어, IAM User Access Key ID, IAM User Secret Access Key를 미리 확인하고 메모해 둡니다.
Terraform으로 기본 인프라 배포
cd cnasg_class_tf/Section06
Bash
복사
# 실습 코드 경로 진입
export TF_VAR_KeyName=[각자 ssh keypair]
export TF_VAR_NickName=[각자 닉네임]
export TF_VAR_MyIamUserAccessKeyID=[각자 iam 사용자의 access key id]
export TF_VAR_MyIamUserSecretAccessKey=[각자 iam 사용자의 secret access key]
export TF_VAR_SgIngressSshCidr=$(curl -s ipinfo.io/ip)/32
Bash
복사
# Terraform 환경 변수 저장
terraform init
terraform plan
Bash
복사
# Terraform 배포
nohup sh -c "terraform apply -auto-approve" > create.log 2>&1 &
Bash
복사
Note:
Terraform 배포가 완료되면(약 3분 정도 대기) 정상적으로 자원 생성이 되었는지 확인을 합니다.(cat create.log)
1.2. 기본 정보 확인 및 설정
Terraform 배포가 완료 후 출력되는 Outputs 정보에서 consoleme_host_ip의 퍼블릭 IP를 확인합니다.
대상 IP로 인스턴스에 SSH로 접속하고 아래 명령어를 통해 정보를 확인합니다.
기본 정보 확인
aws sts get-caller-identity
Bash
복사
# caller id 확인
aws s3 ls
Bash
복사
# awscli로 s3 bucket list 확인
Note:
인스턴스가 생성되고 너무 빠르게 접속하면 aws 자격 증명이 완료되지 않을 수 있습니다.
그럴 경우에는 약간의 대기 후 다시 접속해 주세요.
docker version
docker-compose version
Bash
복사
# docker & docker-compose 버전 확인
실습용 S3 버킷 생성
aws s3 mb s3://cnasg-st6-$NICKNAME
Bash
복사
# S3 버킷 생성
echo "hello world" > /tmp/hello.txt
aws s3 cp /tmp/hello.txt s3://cnasg-st6-$NICKNAME/hello.txt
Bash
복사
# 객체 업로드 및 파일 내용 확인
aws s3 ls
aws s3 ls s3://cnasg-st6-$NICKNAME/
Bash
복사
# 리스트 확인
실습용 IAM Role 생성
cat > trust-edit-role.json <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::$ACCOUNT_ID:root"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
Bash
복사
# 신뢰 정책 JSON 파일 생성
aws iam create-role \
--role-name ConsoleMe-Demo-EditRole \
--assume-role-policy-document file://trust-edit-role.json
Bash
복사
# 첫 번째 IAM Role 생성 (ConsoleMe-Demo-EditRole + 신뢰 정책)
aws iam put-role-policy \
--role-name ConsoleMe-Demo-EditRole \
--policy-name ConsoleMe-Demo-EditPolicy \
--policy-document '{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
}]
}'
Bash
복사
# 첫 번째 IAM Role에 인라인 정책 연결
aws iam create-role \
--role-name ConsoleMe-Demo-SelfServiceRole \
--assume-role-policy-document file://trust-edit-role.json
Bash
복사
# 두 번째 IAM Role 생성 (ConsoleMe-Demo-SelfServiceRole + 신뢰 정책)
실습용 IAM Role에 태그 설정
aws iam tag-role \
--role-name ConsoleMe-Demo-EditRole \
--tags Key=consoleme-authorized,Value=consoleme_admin@example.com
aws iam tag-role \
--role-name ConsoleMe-Demo-SelfServiceRole \
--tags Key=consoleme-authorized,Value=consoleme_admin@example.com
Bash
복사
# 두 개의 IAM Role에 태그 추가
for r in $(aws iam list-roles \
--query "Roles[?starts_with(RoleName, 'ConsoleMe-Demo')].RoleName" \
--output text); do
echo "== Role: $r =="
aws iam list-role-tags --role-name "$r" --output table
echo
done
Bash
복사
# 생성한 IAM Role과 태그 정보 확인
2. ConsoleMe 기본 모드 구성
2.1. ConsoleMe 기본 구성 및 접근
ConsoleMe 설치
git clone https://github.com/Netflix/consoleme.git
cd consoleme
Bash
복사
# consoleme git clone
cat docker-compose-dockerhub.yaml | yq
Bash
복사
# docker-compose 파일 확인
cat docker-compose-dependencies.yaml | yq
Bash
복사
docker-compose \
-f docker-compose-dockerhub.yaml \
-f docker-compose-dependencies.yaml \
pull
Bash
복사
# docker 이미지 가져오기
docker-compose \
-f docker-compose-dockerhub.yaml \
-f docker-compose-dependencies.yaml \
up -d
Bash
복사
# docker 컨테이너 실행(백그라운드)
ConsoleMe 접근
docker ps \
--format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
Bash
복사
# docker ps 확인
docker exec -it consoleme-consoleme-1 env | grep CONFIG_LOCATION
Bash
복사
# consoleme에 CONFIG_LOCATION 환경 변수 확인
ConsoleMe 작동을 위해 YAML 설정 파일을 선택하고 그에 따라 구성합니다.
ConsoleMe 설정 파일을 선택하는 우선 순위는 아래와 같으며 순차적으로 대상을 로드합니다.
1. 환경 변수 CONFIG_LOCATION에 지정된 경로
2. 현재 작업 디렉터리에 위치한 consoleme.yaml 파일
3. ~/.config/consoleme/config.yaml
4. /etc/consoleme/config/config.yaml
5. example_config/example_config_development.yaml
[참고] ConsoleMe 기본 모드 - Config Files
echo -e "ConsoleMe URL = http://$(curl -s ipinfo.io/ip):8081"
Bash
복사
# ConsoleMe URL 확인
echo -e "DynamoDB URL = http://$(curl -s ipinfo.io/ip):8001"
Bash
복사
# DynamoDB URL 확인
docker exec -it consoleme-redis sh
Bash
복사
# Redis 캐시 정보 확인
redis-cli
INFO keyspace
select 0
type IAM_ROLE_CACHE
hkeys IAM_ROLE_CACHE
exit
exit
Bash
복사
2.2. ConsoleMe 기능 확인
AWS Console Roles - Sign In 확인
: 메인 화면 (AWS Console Roles 메뉴)
docker exec -it consoleme-consoleme-1 \
cat /apps/consoleme/example_config/example_config_base.yaml \
| grep "cloud_credential_authorization_mapping:" -A8 | yq
Bash
복사
# cloud credential authorization 설정 확인
for r in $(aws iam list-roles \
--query "Roles[?starts_with(RoleName, 'ConsoleMe-Demo')].RoleName" \
--output text); do
echo "== Role: $r =="
aws iam list-role-tags --role-name "$r" --output table
echo
done
Bash
복사
# 생성한 IAM Role과 태그 정보 확인
출력되는 AWS Console Sign-In에 대상에 대해 접근 후 임시 자격 증명을 확인합니다.
현재 AWS 임시 자격 증명 접근은 관리 콘솔을 통한 방식이며, CLI를 위한 방식은 별도의 태그로 분리됩니다.
참고로 ConsoleMe CLI를 위해 weep라는 도구가 있습니다.
Policies - 확인 및 수정
: Roles and Policies → Policies 메뉴
1. Save 방식 확인
•
Resource : Consolme (검색)
◦
ConsoleMe-Demo-EditRole (선택)
"Action": ["s3:ListAllMyBuckets","s3:ListBucket"],
Bash
복사
◦
Save
◦
Please enter in your justification : (문구 입력)
▪
Submit
▪
Done
aws iam get-role-policy \
--role-name ConsoleMe-Demo-EditRole \
--policy-name ConsoleMe-Demo-EditPolicy | jq
Bash
복사
# ConsoleMe-Demo-EditRole의 인라인 권한 정책 확인
ConsoleMe-Demo-EditRole로 AWS Console Sign-In해서 권한 정책을 확인합니다.
2. Submit 방식 확인
•
Resource : Consolme (검색)
◦
ConsoleMe-Demo-EditRole (선택)
"Action": ["s3:ListAllMyBuckets","s3:ListBucket","s3:DeleteObject","s3:DeleteBucket"],
Bash
복사
◦
Submit
◦
Please enter in your justification : (문구 입력)
▪
Submit
▪
Done
aws iam get-role-policy \
--role-name ConsoleMe-Demo-EditRole \
--policy-name ConsoleMe-Demo-EditPolicy | jq
Bash
복사
# ConsoleMe-Demo-EditRole의 인라인 권한 정책 확인
All Policy Request - 요청 확인 및 승인
: Roles and Policies → All Policy Request 메뉴
•
Status: pending (대상 선택) → Request ID (클릭)
◦
Comments (입력) → Add comment (클릭)
◦
Apply Change (클릭)
aws iam get-role-policy \
--role-name ConsoleMe-Demo-EditRole \
--policy-name ConsoleMe-Demo-EditPolicy | jq
Bash
복사
# ConsoleMe-Demo-EditRole의 인라인 권한 정책 확인
ConsoleMe-Demo-EditRole로 AWS Console Sign-In해서 권한 정책을 확인합니다.
Self Service Permissions - 권한 정책 생성
: Roles and Policies → Self Service Permissions 메뉴
•
Search & Select a Role: ConsoleMe-Demo-SelfServiceRole (선택)
◦
Next
•
Select Desired Permissions: EC2 (선택)
◦
Advanced Editor (클릭)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeTags",
"ec2:DescribeInstanceTypes",
"ec2:DescribeSecurityGroups",
"ec2:DescribeImages"
],
"Resource": "*"
}
]
}
Bash
복사
◦
Add to Policy
◦
Next
•
Justification : (문구 입력)
◦
Submit
파란색 Submit : 승인 절차
초록색 Submit : 즉시 적용 (= Save)
: Roles and Policies → All Policy Request 메뉴
•
Status: pending (대상 선택) → Request ID (클릭)
◦
Comments (입력) → Add comment (클릭)
◦
Apply Change (클릭)
ConsoleMe-Demo-SelfServiceRole로 AWS Console Sign-In해서 권한 정책을 확인합니다.
Create Role - 역할 생성
: Roles and Policies → Create Role 메뉴
•
Create blank role (선택)
◦
Account ID : (각자 입력)
◦
Role name : CNASG-NEW-ROLE
◦
Submit
aws iam get-role --role-name CNASG-NEW-ROLE
Bash
복사
# 생성된 IAM Role 확인
: Roles and Policies → Policies 메뉴
•
Resource : CNASG (검색)
◦
CNASG-NEW-ROLE (선택)
◦
Delete
Consolme-Celery가 AWS 정보를 가져올 때까지 Consoleme 상에는 정보가 남아 있습니다.
3. ConsoleMe OIDC 인증 구성 (Cognito)
3.1. Amazon Cognito 구성
SSH 터널링 구성
ssh -i <키페어 경로> \
-L 8081:localhost:8081 \
ec2-user@<퍼블릭IP>
Bash
복사
이제 http://localhost:8081로 접근 가능합니다.
Cognito User Pool 생성
aws cognito-idp create-user-pool \
--pool-name consoleme-test \
--username-attributes email \
--username-configuration CaseSensitive=false
Bash
복사
# Cognito User Pool 생성
USER_POOL_ID=$(aws cognito-idp list-user-pools --max-results 50 \
--query 'UserPools[?Name==`consoleme-test`].Id' \
--output text)
USER_POOL_ARN=$(aws cognito-idp describe-user-pool \
--user-pool-id $USER_POOL_ID \
--query "UserPool.Arn" \
--output text)
echo "export USER_POOL_ID=$USER_POOL_ID" >> /etc/profile
echo "export USER_POOL_ARN=$USER_POOL_ARN" >> /etc/profile
echo $USER_POOL_ID
echo $USER_POOL_ARN
Bash
복사
# User Pool ID와 ARN 변수 선언
⇒ [관리 콘솔] Amazon Cognito → 사용자 풀 → 대상 선택
aws cognito-idp create-user-pool-domain \
--user-pool-id $USER_POOL_ID \
--domain consoleme-$NICKNAME
Bash
복사
# User Pool의 도메인 생성
COGNITO_DOMAIN=consoleme-$NICKNAME
echo "export COGNITO_DOMAIN=$COGNITO_DOMAIN" >> /etc/profile
echo $COGNITO_DOMAIN
Bash
복사
# 도메인 접두어 변수 선언
⇒ [관리 콘솔] Amazon Cognito → 사용자 풀 → 대상 선택 → 도메인
aws cognito-idp create-group \
--user-pool-id $USER_POOL_ID \
--group-name admins \
--description "Admin users for ConsoleMe"
aws cognito-idp create-group \
--user-pool-id $USER_POOL_ID \
--group-name devs \
--description "Developer users for ConsoleMe"
Bash
복사
# User Pool에 group 생성 (admins & devs)
⇒ [관리 콘솔] Amazon Cognito → 사용자 풀 → 대상 선택 → 그룹
Cognito User Pool - Client 생성
aws cognito-idp create-user-pool-client \
--user-pool-id $USER_POOL_ID \
--client-name consoleme-app \
--generate-secret \
--allowed-o-auth-flows "code" \
--allowed-o-auth-scopes "openid" "email" \
--allowed-o-auth-flows-user-pool-client \
--callback-urls "http://localhost:8081/auth" "http://localhost:8081/oauth2/idpresponse" \
--logout-urls "http://localhost:8081" \
--explicit-auth-flows "ALLOW_REFRESH_TOKEN_AUTH" "ALLOW_CUSTOM_AUTH" "ALLOW_USER_SRP_AUTH" "ALLOW_USER_PASSWORD_AUTH" \
--supported-identity-providers "COGNITO"
Bash
복사
# User Pool에 앱 클라이언트 생성
CLIENT_ID=$(aws cognito-idp list-user-pool-clients \
--user-pool-id $USER_POOL_ID \
--query "UserPoolClients[?ClientName=='consoleme-app'].ClientId | [0]" \
--output text)
CLIENT_SECRET=$(aws cognito-idp describe-user-pool-client \
--user-pool-id $USER_POOL_ID \
--client-id $CLIENT_ID \
--query "UserPoolClient.ClientSecret" \
--output text)
echo "export CLIENT_ID=$CLIENT_ID" >> /etc/profile
echo "export CLIENT_SECRET=$CLIENT_SECRET" >> /etc/profile
echo $CLIENT_ID
echo $CLIENT_SECRET
Bash
복사
# Client ID와 Secret 변수 선언
⇒ [관리 콘솔] Amazon Cognito → 사용자 풀 → 대상 선택 → 앱 클라이언트 → 대상 선택
3.2. ConsoleMe OIDC 인증 구성
Cognito를 통한 OIDC 인증을 수행한 ConsoleMe를 재구성합니다.
사전 작업
aws iam tag-role \
--role-name ConsoleMe-Demo-EditRole \
--tags Key=consoleme-authorized,Value=admins
aws iam tag-role \
--role-name ConsoleMe-Demo-SelfServiceRole \
--tags Key=consoleme-authorized,Value=admins
Bash
복사
# 두 개의 IAM Role에 태그 변경
for r in $(aws iam list-roles \
--query "Roles[?starts_with(RoleName, 'ConsoleMe-Demo')].RoleName" \
--output text); do
echo "== Role: $r =="
aws iam list-role-tags --role-name "$r" --output table
echo
done
Bash
복사
# 생성한 IAM Role과 태그 정보 확인
docker-compose \
-f docker-compose-dockerhub.yaml \
-f docker-compose-dependencies.yaml \
down -v
Bash
복사
# docker 컨테이너 제거
docker ps
Bash
복사
# docker ps 확인
ConsoleMe Docker 컨테이너 재기동
cat docker-compose-dockerhub.yaml | grep env -A1
Bash
복사
# docker-compose 파일에서 환경 변수 정보 확인
sed -i 's#/apps/consoleme/example_config/example_config_docker_development.yaml#/etc/consoleme/config.yaml#' \
docker-compose-dockerhub.yaml
cat docker-compose-dockerhub.yaml | grep env -A1
Bash
복사
# docker-compose 파일에서 환경 변수 정보 변경 및 확인
cat docker-compose-dockerhub.yaml | grep volumes -A3
Bash
복사
# docker-compose 파일에서 볼륨 마운트 정보 확인
cat > ~/.config/consoleme/config.yaml << EOF
application_admin: consoleme_admins@example.com
auth:
get_user_by_oidc: true
set_auth_cookie: true
logout_redirect_url: https://$COGNITO_DOMAIN.auth.ap-northeast-2.amazoncognito.com/logout?client_id=$CLIENT_ID&logout_uri=http://localhost:8081
get_user_by_oidc_settings:
metadata_url: https://cognito-idp.ap-northeast-2.amazonaws.com/$USER_POOL_ID/.well-known/openid-configuration
jwt_verify: true
jwt_email_key: email
jwt_groups_key: cognito:groups
grant_type: authorization_code
id_token_response_key: id_token
access_token_response_key: access_token
access_token_audience: null
oidc_secrets:
client_id: $CLIENT_ID
secret: $CLIENT_SECRET
client_scope:
- openid
- email
development: true
url: http://localhost:8081
tornado:
debug: false
port: 8081
xsrf: true
xsrf_cookie_kwargs:
samesite: strict
cloud_credential_authorization_mapping:
role_tags:
enabled: true
authorized_groups_tags:
- consoleme-authorized
authorized_groups_cli_only_tags:
- consoleme-owner-dl
- consoleme-authorized-cli-only
aws:
issuer: CloudNeta
region: "ap-northeast-2"
cli_auth:
certificate_header: certificate_header
required_headers:
- RequiredMTLSHeader: RequiredMTLSHeaderValue
groups:
can_admin:
- admins
can_edit_config:
- admins
can_admin_policies:
- admins
can_edit_policies:
- devs
jwt:
email_key: email
dynamodb_server: http://CONSOLEME-DYNAMODB:8005
celery:
broker:
us-east-1: redis://consoleme-redis:6379/1
us-west-2: redis://consoleme-redis:6379/1
backend:
us-east-1: redis://consoleme-redis:6379/2
us-west-2: redis://consoleme-redis:6379/2
debug: true
redis:
host:
us-east-1: consoleme-redis
us-west-2: consoleme-redis
db: 0
port: 6379
EOF
cat ~/.config/consoleme/config.yaml | yq
Bash
복사
# config.yaml 파일 생성 및 확인
docker-compose \
-f docker-compose-dockerhub.yaml \
-f docker-compose-dependencies.yaml \
up -d
Bash
복사
# docker 컨테이너 실행(백그라운드)
docker ps \
--format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
Bash
복사
# docker ps 확인
echo -e "ConsoleMe URL = http://localhost:8081"
Bash
복사
# ConsoleMe URL 확인
셀프 서비스 가입 및 등록 (admins)
aws cognito-idp describe-user-pool \
--user-pool-id $USER_POOL_ID \
--query "UserPool.AdminCreateUserConfig.AllowAdminCreateUserOnly"
Bash
복사
# Admin Create User Only 설정 확인
⇒ [관리 콘솔] Amazon Cognito → 사용자 풀 → 대상 선택 → 가입 → 셀프 서비스 가입
관리자만 오직 사용자를 생성하는 옵션(AllowAdminCreateUserOnly)이 비활성화 상태입니다.
즉, 셀프 서비스 가입에 셀프 등록이 활성화된 상태입니다.
사용자1 입장
: http://localhost:8081로 접근합니다.
•
Sign up (클릭)
◦
Email: (각자의 이메일)
◦
Password: (각자의 암호) ← 암호 복잡도 조건에 맞춰 생성
◦
Sign up (클릭)
관리자 입장
aws cognito-idp list-users \
--user-pool-id ${USER_POOL_ID} \
--query 'Users[*].[Attributes[0].Name, Attributes[0].Value, UserStatus]' \
--output table
Bash
복사
# Cognito 사용자 풀에 사용자 확인 (이메일, 상태)
⇒ [관리 콘솔] Amazon Cognito → 사용자 풀 → 대상 선택 → 사용자
•
확인 상태 : 확인되지 않음
•
사용자 이름 (클릭)
◦
작업 → 계정 확인 (선택)
◦
확인 (버튼 클릭)
•
확인 상태 : 확인됨
•
그룹에 사용자 추가 (클릭)
◦
admins (선택) → 추가 (클릭)
사용자1 입장
•
Email: (각자의 이메일)
•
Password: (각자의 암호)
•
Sign in (클릭)
admins에 속한 사용자에 대한 권한을 확인합니다.
셀프 서비스 가입 및 등록 (devs)
사용자2 입장
: 사용자1에서 Logout을 수행한 후 진행합니다. (계정명 → Logout)
•
Sign up (클릭)
◦
Email: (각자의 이메일)
◦
Password: (각자의 암호) ← 암호 복잡도 조건에 맞춰 생성
◦
Sign up (클릭)
관리자 입장
aws cognito-idp list-users \
--user-pool-id ${USER_POOL_ID} \
--query 'Users[*].[Attributes[0].Name, Attributes[0].Value, UserStatus]' \
--output table
Bash
복사
# Cognito 사용자 풀에 사용자 확인 (이메일, 상태)
⇒ [관리 콘솔] Amazon Cognito → 사용자 풀 → 대상 선택 → 사용자
•
확인 상태 : 확인되지 않음
•
사용자 이름 (클릭)
◦
작업 → 계정 확인 (선택)
◦
확인 (버튼 클릭)
•
확인 상태 : 확인됨
•
그룹에 사용자 추가 (클릭)
◦
devs (선택) → 추가 (클릭)
사용자2 입장
•
Email: (각자의 이메일)
•
Password: (각자의 암호)
•
Sign in (클릭)
정책 수정 및 승인 확인
사용자2 입장
: Roles and Policies → Policies
•
Resource : Consolme (검색)
◦
ConsoleMe-Demo-EditRole (선택)
"Action": ["s3:ListAllMyBuckets","s3:ListBucket"],
Bash
복사
◦
Submit
◦
Please enter in your justification : (문구 입력)
▪
Submit
▪
Done
: Roles and Policies → All Policy Request 메뉴
•
Status: pending (대상 선택) → Request ID (클릭)
Apply Change로 승인할 수 있는 권한이 없습니다.
사용자1 입장
: 사용자2에서 Logout을 수행한 후 진행합니다. (계정명 → Logout)
: Roles and Policies → All Policy Request 메뉴
•
Status: pending (대상 선택) → Request ID (클릭)
◦
Comments (입력) → Add comment (클릭)
◦
Apply Change (클릭)
aws iam get-role-policy \
--role-name ConsoleMe-Demo-EditRole \
--policy-name ConsoleMe-Demo-EditPolicy | jq
Bash
복사
# ConsoleMe-Demo-EditRole의 인라인 권한 정책 확인
3.3. ConsoleMe 이벤트 알림 (Slack Webhook)
ConsoleMe 이벤트를 신속하게 파악하기 위한 Slack Webhook을 통한 알림 구성을 실습합니다.
Slack 채널 생성
1.
Slack 워크스페이스 접속
2.
채널 → [추가 작업] → 생성 → 채널 생성
3.
채널 이름 : consoleme-alerts
a.
다음 (버튼 클릭)
4.
가시성 : 공개
a.
생성 (버튼 클릭)
Slack App 생성 (Webhook 발급용)
1. Slack API 페이지 접속
2. Create an App → From scratch 선택
3. App Name: consoleme-webhook
4. Workspace: 본인 워크스페이스 선택
5. Create App 클릭
Webhook 기능 활성화
1.
Features에서 Incoming Webhooks 선택
2.
상단의 Activate Incoming Webhooks → ON
3.
아래쪽으로 스크롤 → Add New Webhook 클릭
4.
방금 만든 채널(consoleme-alerts) 선택 → “허용”
5.
생성된 Webhook URL 복사
Slack Webhook 구성
SLACK_WEBHOOK_URL=<각자의 Webhook URL>
Bash
복사
# SLACK_WEBHOOK_URL 변수 저장
cat <<EOF >> ~/.config/consoleme/config.yaml
slack:
notifications_enabled: true
webhook_url: $SLACK_WEBHOOK_URL
EOF
Bash
복사
# config.yaml 뒤에 slack 설정 추가
docker exec -it consoleme-consoleme-1 \
cat /etc/consoleme/config.yaml | grep slack: -A2
Bash
복사
# consoleme 컨테이너의 설정 파일 반영 확인
docker-compose \
-f docker-compose-dockerhub.yaml \
-f docker-compose-dependencies.yaml \
restart
Bash
복사
# docker-compose 재시작
devs 그룹 사용자가 ConsoleMe Policy Change Request를 수행할 때 Webhook 정보를 확인합니다.
4. 실습 환경 삭제
생성한 자원 삭제
⇒ [관리 콘솔] IAM → 역할 → ConsoleMe (검색) → 대상 모두 선택 → 삭제
aws cognito-idp delete-user-pool-domain \
--user-pool-id $USER_POOL_ID \
--domain $COGNITO_DOMAIN
Bash
복사
# Cognito User Pool의 도메인 삭제
aws cognito-idp delete-user-pool \
--user-pool-id $USER_POOL_ID
Bash
복사
# Cognito User Pool 삭제
Slack Webhook 및 채널 삭제
•
Slack App 페이지 → 대상 App Name → Basic Information → 페이지 하단 → Delete App → Yes, I’m sure
•
Slack → 대상 채널(#consoleme-alerts) → 추가 정보(상단 …) → 채널 세부정보 열기 → 설정 → 이 채널 삭제 → 채널 삭제
Terraform 자원 삭제
nohup sh -c "terraform destroy -auto-approve" > delete.log 2>&1 &
Bash
복사
# terraform 자원 삭제
Note:
Terraform 자원 삭제가 완료되면(약 3분 정도 대기) 정상적으로 자원 삭제가 되었는지 확인을 합니다.(cat delete.log)
여기까지 섹션 06 실습 - ConsoleMe를 활용한 중앙 집중형 AWS IAM 관리를 마칩니다.
수고하셨습니다 :)



