안녕하세요 ✨
이번에는 Consoleme 무작정 따라하기 입니다!!
오픈소스다 보니 시간이 지나면 또 설정이 많이 바뀌겠지만!😩 나중에라도 다시 참고하기 위해 작성해놓습니다.
이 포스팅에서 작성하는 내용은 실제 운영환경과는 다르며, 테스트 용도로만 사용할 것을 권장 드립니다.
Step #1) ConsoleMe 설치하고 접속 확인하기
콘솔미는 Docker로 띄우거나 리눅스에 설치하여 사용할 수 있습니다. (참고URL)
EC2(Ubuntu 20.04.3 LTS)를 생성하고 SSH로 접속합니다.
순서에 따라 명령어를 실행해줍니다.
apt-get update
apt-get install build-essential libxml2-dev libxmlsec1 libxmlsec1-dev libxmlsec1-openssl musl-dev libcurl4-nss-dev python3-dev pkg-config python3.8-venv awscli docker-compose -y
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash
apt-get install -y nodejs
npm install yarn -g
cd /
git clone https://github.com/Netflix/consoleme.git
cd consoleme
docker-compose -f docker-compose-dependencies.yaml up -d
여기까지 실행 하셨다면 3개의 컨테이너가 올라와있는걸 볼 수 있습니다!
root@ec2:/consoleme# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a5c3e5405f7 redis:alpine "docker-entrypoint.s…" 43 hours ago Up 2 hours 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp consoleme-redis
b4ba1937fae6 cnadiminti/dynamodb-local "java -jar DynamoDBL…" 43 hours ago Up 2 hours 8000/tcp, 0.0.0.0:8005->8005/tcp, :::8005->8005/tcp consoleme-dynamodb
49c913f5cf52 aaronshaf/dynamodb-admin:latest "docker-entrypoint.s…" 43 hours ago Up 2 hours 0.0.0.0:8001->8001/tcp, :::8001->8001/tcp consoleme-dynamodb-admin
👉 Redis, DynamoDB는 왜 사용하나요? (⬇⬇더보기⬇⬇)
* 참고 URl: https://hawkins.gitbook.io/consoleme/architecture
* DynamoDB
Table Name | 설명 |
consoleme_iamroles_global | IAM 역할의 캐시 |
consoleme_config_global | ConsoleMe의 동적 구성 |
consoleme_policy_requests | 사용자가 제출한 정책 요청 |
consoleme_resource_cache | AWS Config 에서 캐시된 리소스 |
consoleme_cloudtrail | 리소스와 관련된 최근 Cloudtrail 오류의 집계 |
* Redis
Key | 설명 |
ALL_POLICIES | 엔드포인트 에 사용된 모든 역할 및 리소스의 json 목록 /policies |
CREDENTIAL_AUTHORIZATION_MAPPING_V1 | 의 캐시 (예: 어떤 사용자 및 그룹이 어떤 역할에 대한 자격 증명을 검색할 수 있는지) |
AWSCONFIG_RESOURCE_CACHE | AWS Config를 쿼리 하여 검색된 리소스 의 캐시 |
SNS_TOPICS | 계정 전체에서 SNS를 쿼리하여 검색한 SNS 주제 목록 |
ALL_POLICY_REQUESTS | 엔드포인트 에서 사용한 모든 과거 정책 요청 목록/requests |
ALL_AWS_ACCOUNTS | 유효한 모든 AWS 계정 목록 |
IAM_MANAGED_POLICIES | 모든 IAM 관리형 정책 목록 (ConsoleMe의 정책 편집기에서 미리 관리되는 정책을 채우는 데 사용) |
IAM_ROLE_CACHE
|
모든 IAM 역할 및 알려진 상태의 목록 (역할에 대한 정보를 빠르게 검색하는 데 사용) |
3개의 컨테이너가 잘 올라왔다면, 이제 콘솔미 메인 프로세스를 띄워봅시다~~! 👍
먼저 AWS IAM 계정을 설정해줍시다.
root@ec2:/consoleme# aws configure
AWS Access Key ID [None]: <AccessKey>
AWS Secret Access Key [None]: <SecretKey>
Default region name [None]: ap-northeast-2
Default output format [None]: json
그리고 아래 명령어를 실행해줍니다.
# Make a Python 3.8 Virtual Environment using your preferred method.
python3 -m venv env
. env/bin/activate
# Ensure that you have valid AWS credentials before running `make install`
# 여기서 시간이 좀 걸려요, AWS IAM정보를 불러와서 Redis로 로드하게 됩니다.
make install
# 콘솔미 실행!!
python consoleme/__main__.py
👉 백그라운드에서 실행하고싶어요! (⬇⬇더보기⬇⬇)
백그라운드에서 실행해주기위해서 서비스로 만들어줍니다.
아래 순서대로 명령어를 실행해주세요!
root@ec2:/consoleme# vim /usr/bin/consoleme_start.sh (아래 복붙하세요!)
#!/bin/bash
. env/bin/activate
python consoleme/__main__.py
root@ec2:/consoleme# vim /etc/systemd/system/consoleme.service
[Unit]
Description=Run consoleme service.
[Service]
Type=simple
User=root
WorkingDirectory=/consoleme
ExecStart=/usr/bin/consoleme_start.sh
[Install]
WantedBy=multi-user.target
root@ec2:/consoleme# chmod +x /usr/bin/consoleme_start.sh
root@ec2:/consoleme# systemctl enable consoleme && systemctl start consoleme
>> 설정파일 바뀔땐 반드시 systemctl restart consoleme 해주는것 잊지마세요!!
이제, 콘솔미 접속이 가능합니다.
여기저기 확인해보세요! AWS IAM 목록이 보일겁니다.
여기서 주의하셔야 할 부분은 인증절차가 빠졌다는것 입니다. IAM 정책 수정이 가능한데, 인증되지 않은 사용자가 막 마음대로 보고 씹고 물고 뜯고 맛보고 즐기면 안되겠죠?
바로 다음 포스팅에서 Cognito+ALB 인증절차를 수행해봅시다.
뿅! 👻
다음포스팅으로 가기 https://1mini2.tistory.com/150
참고자료
1) https://hawkins.gitbook.io/consoleme/
2) https://kerneltalks.com/tools/netflixs-consoleme-local-installation-on-linux-machine/