KMS란
KMS 궁금해만 하고 알려하지 않았던 것이라고 말하고 싶다
하지만 이번 기회에 한번 다시 정리해보려 한다
KMS(key Management Service)란
1.KMS는 암호키(Encryption Key)를 쉽게 생성하고 제어할 수 있게 해주는 관리형 서비스다
2.암호키를 사용하여 AWS 서비스에 암호화를 시켜준다. 즉 AWS에서 resource들을 함호화 하는데 사용한다
(s3,RDS,EBS,RDS,DynamoDB,CloudTrail등등)
kms를 사용하는 이유
- 고객 정보
- password
- private 한 것
결국엔 아무에게나 보여주지 않는 정보들을 보호하기 위해 사용한다
KMS는 크게 세가지 방식으로 Key 관리 서비스를 제공한다
1.AWS Managed key: AWS 서비스들이 KMS 를 통해 Key를 서비스 받는 것으로, 내부적으로 자동으로 일어나게 되며 사용자가 직접적으로 제어가 불가능하다.
2.customer managed key(CMK): 사용자가 직접 key 를 생성하고 관리하는 것이다.
3.Custom key stores
근데 우리가 직접 사용할 수 있는 key는 customer managed key 이다
그럼 한번 실습을 진행하면서 재밌는 KMS를 해보자
실습)
우리가 할 실습은 한 유저에게는 CMK 키를 주고 다른 유저는 CMK를 안 준다음
kms 로 암호화한 객체를 저장한 s3를 두 유저가 접근하는 실습을 해보겠다
1.Group 만들기
일단 group을 만든다
administrator 이라는 권한을 받을 수 있는 group을 만들고
이제 2 개의 user을 생성해 준다
2.User만들기
1.entry-allow 유저(kms 키를 가지는 유저)
만든 유저로 들어가기 위해서 Custom Password를 생성해 준다 (본인이 생성하는 거임)
이렇게 자신의 group 안에 넣어서 administrator이라는 권한을 준다 >> user생성
2.entry-non(kms가 없을 유저)
위와 거의 동일하고
s3 ReadOnly를 주고 바로 생성을 해준다
그리고 이젠 본격 KMS 키를 만들어 가보겠다
3.KMS 키를 만들기
KMS를 선택하고 리전은 sigle region 그리고 symmetric로 선택
이 키를 사용할 수 있는 region 은 seoul이고
symmetric를 선택했기 때문에 AWS 계정으로만 KMS에 접근이 가능하다
만약 다른 곳에서 AWS kms 에 접근하고 싶다면 Asymmetric를 사용하면 된다
Alias로 key의 별칭을 설정해주고
바로 생성을 해준다
그럼 이제 s3객체에 저 kms 로 암호화를 해본뒤에 여러 유저들로 접근을 해보자
4.s3 객체 암호화
아무 파일 하나를 만들어서 본인 local에 저장후 s3에 업로드 작업까지 온다음
아래로 내려가
Properties > Server-side encryption settings
자신이 생성한 kms 키를 선택한다
암호화를 했다면 객체를 upload를 해준다
이런식으로 아름답게 kms 암호화가 된 limlim.txt가 올라갔다
5.접근
한번 아까 만든 entry-non으로 접근을 해보자
객체로 들어와서
한번씩 눌러준다
이러한 결과를 보내준다
그러면 이번에는
entry-allow user로 접속을 해보면
잘도 열리고 다운도 잘 될 것이다
진짜 kms 그냥 완전 재미도 없고 별로 일 거고 알 필요도 없다고 생각하진 않았지만
좀 따분하고 굳이 해야하나 싶을 거였는데 결과를 확인하고 나니 더 공부하고 싶어진다는 마음이 생겼다