😆 Big Data/- AWS

[parameter store] 파라미터 스토어를 이용해 비밀번호처럼 중요한 정보를 다른 문자로 처리하기 ( +CLI aws 엑세스 기본설정)

또방91 2022. 1. 23. 23:17
728x90

 

 

 

 

 

 

 

 

 

 

🍒  비밀번호처럼 중요한 정보를 github에 올릴 때 다른 문자로 처리하기  🍒  

 

 

파이썬과 Mysql을 연동시키는 pymysql.connect를 사용하게되면, 코드식에 어쩔 수 없이 비밀번호를 쓰게된다!

테스트용으로 만드는 경우엔 상관없지만, 개인정보 등 중요한 정보를 database에 담고 있기에 노출위험이 생겨버린다.

 

이럴 때 정말 유용하게 사용할 수 있는 것이 AWS의 파라미터 스토어(parameter Store)!!!

 

 

 

먼저 공식 홈페이지에서 정의하고 있는 파라미터 스토어에 대해 간단히 알아보자.

 

1. Parameter Store란                                  

AWS Systems Manager는 데이터베이스 문자열과 같은 평문 데이터든 암호와 같은 비밀이든 관계없이 구성 데이터를 관리할 수 있는 중앙 스토어를 제공합니다. 따라서 비밀과 구성 데이터를 코드와 분리할 수 있습니다. 파라미터를 태깅하고 계층으로 분류할 수 있으므로 좀 더 쉽게 파라미터를 관리할 수 있습니다.

 

 

 

2. Parameter Store 시작하기                          

🧭1. Parameter Store 메뉴 접속하기

; aws.amazon.com에 접속해서 로그인을 한뒤 상단검색창에 Parameter Store를 검색한다!

 

🧭2. 파라미터 생성하기

2-1. [파라미터 생성]버튼을 눌러서 생성시작

 

2-2. 파라미터 세부정보 작성하기 >>> [파라미터 생성]을 눌러 완료한다.

*이름 (파라미터 이름)

*설명 (파라미터 설명)

*계층 (추가요금이 부과되지않는 무료 '표준' 선택)

*유형 ( '보안 문자열' 선택! 맨아래 '값'칸에다가 중요한 비밀번호를 작성해줘서 보안해줄거니까!)

*KMS 키 소스 ( '내 현재 계정' 을 누르면 내 기본 AWS 관리형 키 alias/aws/ssm 설정된다.)

*값 ( 보안처리해줄 내 비밀번호를 적어준다.)

 

 

🧭3. 사용자에게  SSM 권한을 추가한다.

1.  IAM 서비스 메뉴에 접속한다 (검색창에 IAM 검색)

 

2. 왼쪽 메뉴에서 [정책]을 선택 >>> ssm 검색해서 AmazonSSMFullAccess를 선택 >> 작업 중 attach를 선택하기

 

3. 연결해줄 사용자를 선택하고 정책을 연결합니다.

 

3. AWS CLI 설정하기                                             

: AWS CLI에서 사용할 AWS 사용자 기본값을 설정해주는데, 이때 위에서 AmazonSSMFullAccess  설정한 사용자를 기본값으로 설정합니다.

2022.01.21 - [빅데이터 공부/AWS] - [AWS] AWS CLI(명령줄 인터페이스) 설치 + AWS 기본값 설정하기 (잘못 쳤을때, Access key 잊어버렸을때)

 

[AWS] AWS CLI(명령줄 인터페이스) 설치 + AWS 기본값 설정하기 (잘못 쳤을때, Access key 잊어버렸을때)

🖥 AWS CLI (AWS 명령줄 인터페이스) " AWS CLI = AWS(Amazon Web Services) + CLI(명령어로 조작가능한 명령줄 도구) " AWS CLI(명령줄 인터페이스)이란 AWS 서비스를 관리하는 통합 도구입니다. 도구 하나만 다..

coding-nurse.tistory.com

 

 

4. Parameter 설정 확인하기                                   

 

boto3 모듈을 사용해서 aws 서비스를 이용할수 있는데,

이 boto3모듈 안 class SSM.Client 클래스를 사용하고, 

get_parameters( )함수를 사용하여 파라미터 정보를 받아올 수 있습니다.

 

🧭1. 코드식 작성하기

파라미터 생성할 떄 설정한 값이 출력될 것이다 🙂

# 1. 모듈 임포트
import boto3

# 2. 파라미터 받아오기
# Name에는 생성했던 파라미터 이름을 써줍니다.
# WithDecryption은 해독된 보안 문자열 값을 반환여부를 써줍니다.(True/False)
test = boto3.client.get_parameter(Name="myweb/database1_password",WithDecryption=True)

# 3. 설정한 보안 비밀번호 값 출력하기
# 딕셔너리로 설정되어있기에 
print( test['Parameter']['Value'] )

https://github.com/LIMSONA/KDT/blob/main/3wk/firstWeb/pm_test.py

 

🧭2. 참고

**참고 1 : boto란?

boto3란??
Python용 AWS SDK인 boto3를 사용하여 AWS를 빠르게 시작하십시오. Boto3를 사용하면 Python 애플리케이션, 라이브러리 또는 스크립트를 Amazon S3, Amazon EC2, Amazon DynamoDB 등 AWS 서비스와 쉽게 통합할 수 있습니다.
oto3의 'Client' 및 'Resource' 인터페이스에는 AWS API를 설명하는 JSON 모델에서 동적으로 생성된 클래스가 있습니다. 이를 통해 AWS에서는 모든 지원 서비스 전체에 일관성이 높고 매우 빠른 업데이트를 제공할 수 있습니다.

**참고 2: get_parameter (공식홈페이지로 클릭 >> 🖥️ )

 

5. Parameter 활용하기                                      

 

https://github.com/LIMSONA/KDT/blob/main/3wk/firstWeb/parmater%2Bdb.py

 

; pymysql과 parameter 같이 사용하기!!

👉 원래라면 pymysql.connect에서 비밀번호를 적어줘야하는데,

그럴 필요없이 파라미터 스토어에서 지정한 비밀번호의 변수값 db_password을 쓰면 된다.

import pymysql
import boto3

ssm = boto3.client("ssm")
parameter = ssm.get_parameter(Name="/myweb/database1_password", WithDecryption=True)
db_password = parameter['Parameter']["Value"]

# connect할 때 passwd에는 위에서 설정한 parameter변수인 db_password를 써준다.
conn = pymysql.connect(host="database-1.cfiuke7ewdz2.ap-northeast-2.rds.amazonaws.com",\
db="awsdb", port=3306, user="admin", passwd=db_password)
cur = conn.cursor()
sql = "insert into test values (2,'kkukku')"
cur.execute(sql)
conn.commit()
cur.close()
conn.close()

 

 

 

 

728x90