⭐️ Amazon Web Service/AWS IAM

[IAM 관리 오픈소스] Consoleme 무작정 따라하기 #1

mini_world 2022. 2. 12. 19:02

안녕하세요 ✨
이번에는 Consoleme 무작정 따라하기 입니다!!

 

ConsoleMe: A Central Control Plane for AWS Permissions and Access

By Curtis Castrapel Patrick Sanders

netflixtechblog.com

오픈소스다 보니 시간이 지나면 또 설정이 많이 바뀌겠지만!😩 나중에라도 다시 참고하기 위해 작성해놓습니다.
이  포스팅에서 작성하는 내용은 실제 운영환경과는 다르며, 테스트 용도로만 사용할 것을 권장 드립니다.

 

 


 

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

 

[IAM 관리 오픈소스] Consoleme 무작정 따라하기 #1

안녕하세요 ✨ 이번에는 Consoleme 무작정 따라하기 입니다!! ConsoleMe: A Central Control Plane for AWS Permissions and Access By Curtis Castrapel Patrick Sanders netflixtechblog.com 오픈소스다 보니 시..

1mini2.tistory.com

 

참고자료

1) https://hawkins.gitbook.io/consoleme/
2) https://kerneltalks.com/tools/netflixs-consoleme-local-installation-on-linux-machine/