오늘은 보안 & 암호화를 알아봤다.
ssl
sse - kms(server side)
client side encryption - 서버 해독방법 모름
aws encryption = kms를 말하는 것
ebs : encrypt volumes
s3 : serverside encryption of object
redshift : encryption of data
rds : encryption of data
ssm : parameter store
대칭 키 = kms use cmks(customer master key)
비대칭키 = 2개 관리(public, private), kms api call을 안하는 유저
그래서 대칭키가 많이 출제됨
kms는 cloudtrail과 통합해서 키를 누가 사용했는 지 알 수 있음
kms 사용은 database password, credential to external service, private key of ssl certificates 이 3가지이다.
4kb 데이터만 암호화 가능하며, 코드나 환경변수에 secrets로 저장되어야한다. -> 4이하면 encrypt(암호화), decrypt(해독)
만약 4kb를 넘으면 envelop encrption(봉투암호화)를 사용해야한다. -> 4이상이면 GenerateDataKey API 사용
generateDataKeyWithoutPlaintex도 있음 몰라도 됨
kms를 다른사람에게 접근할 수 있게 하려면
key policy를 allow 하거나, iam policy api call을 allow한다.
kms는 특정 리전에 묶인다. 따라서 다른 리전에 보내기 어렵다. 그래서 다른 작업(snapshot, ebs)을 해줘야한다.
kms는 s3 버켓 정책과 비슷한데, policy가 없으면 access가 어렵다.
iam policy를 주면 kms key에 접근할 수 있다.
kms 할당량 조절
- 지수백오프 전략
- kms로 가는 api call 줄이기(데이타 캐싱기능)
- aws 제한 늘려달라고 요청
s3 encryption for object 4개 차이를 알아야함(sse-kem 위주로 알아보기)
1. sse-s3 : encrypt s3 objects using key handled & managed by aws
2. sse-kms : leverage aws key management service to manage encryption key
kms : aws 내에 kms 사용을 추적할 수 있음
header : "x-amz-server-side-encryption:aws:kms"
generateDataKay & Decrypt KMS
user / role , iam policy to kms ->if not : denied
데이터를 s3에 많이 업로드해서 생기는 스트롤링 문제는 s3문제가 아니라 kms limit 문제임
S3 Buckek Policy - Force SSL
- aws: SecureTransport = False
S3 bucket Policy - Force Encryption of SSE-KMS
- aws: kms
3. sse-c : when you want to manage your own encryption key
4. client side encryption
S3 Bucket key(aws/s3 manage key)를 사용함으로서 KMS로 보내는 API호출 수를 줄일 수 있게 됨.
- AWS Master key를 가지고 S3에 bucket key를 만들고 이를 가지고 무수히 많은 Data Key를 만들어서 S3 Bucket에 저장하는 구조
SSM parameter
- kms 암호화한 것을 파라미터처럼 사용
- secrets manager로 부터 암호 참조 가능
- aws로 부터 직업 파라미터 참조 가능
- limit는 4kb 이라서 넘으면 advance 버전 사용해야함
- ttl 가능, Multiple policy 가능
- simple api
- 암호의 순환 없음(하지만, 람다 트리거로 cloudwatch로 events 가능)
- kms 선택사항
- ssm api을 통해 secret manager pull 가능
- 버전 추적기능
secrets manager(ssm과 비교)
- 암호 저장, 암호의 순환, rds와 통합
- kms 의무 사용
- cloudformation과 통합가능
- rds, redshift 등등
cloudwatch log - encryption
- kms 키로 cloudwatch log 암호화 가능
- 로그 스트림이 아니라 로그 그룹 레벨에서 encryption 가능
- cmk로 로그 그룹과 연결하거나 새로 생성할 수 있음
- cloudwatch console에서는 cmk와 log group을 사용해 연결할 수 없다. 대신 cloudwatch api를 사용해야한다.
-> create-log-group api : 존재하지 않는 로그 그룹을 생성해 kms키와 연결하게 만들어주는 api
-> Associate-kms-key : 기존에 존재하는 로그를 암호화
1.
해설 : 기내 암호화 = HTTPS이며 SSL 인증서 없이 HTTPS를 활성화할 수 없습니다
2.
해설 : 서버 측 암호화는 서버가 당사를 위해 데이터를 암호화함을 의미합니다. 미리 암호화할 필요가 없습니다.
3.
해설 : 서버 측 암호화에서는 해당 암호화 키에 액세스할 수 없기 때문에 데이터를 스스로 해독할 수 없었습니다.
4.
해설 : 클라이언트 측 암호화를 사용하면 서버가 암호화 또는 암호 해독 작업을 수행하지 않으므로 서버가 사용 중인 암호화 체계에 대한 정보를 알 필요가 없습니다.
5.
해설 : KMS에서 AWS Managed Service 키를 사용할 수 있으므로 자체 KMS 키를 생성할 필요가 없습니다.
* AWS에서 암호화를 수행할 고유한 키를 생성할 수도 있지만 필수는 아닙니다.
6.
해설 : KMS 키는 대칭 또는 비대칭일 수 있습니다. 대칭형 KMS 키는 암호화 및 복호화에 사용되는 256비트 키를 나타냅니다. 비대칭 KMS 키는 암호화 및 암호 해독 또는 서명 및 확인에 사용되는 RSA 키 쌍을 나타내지만 둘 다에 사용되는 것은 아닙니다. 또는 서명 및 확인에 사용되는 ECC(타원 곡선) 키 쌍을 나타냅니다.
7.
해설 : kms를 공유하려면 snapshot으로 만들어서 ebs를 만들면 되는데, cmk를 공유해야함
8.
해설 : kms policy
9.
해설 : 일반 환경변수보다는 암호화된 환경변수가 더 안전
10.
해설 : 버전 추적기능
11.
해설 : 버전추적
12.
해설 : 비밀번호는 secrets manager
13.
해설 : 4kb 넘으면 generatedatakey
14.
해설 : SSE: KMS를 사용하여 버킷을 암호화하므로 EC2 인스턴스에 KMS 키에 액세스하고 암호 해독 작업을 수행할 수 있는 권한을 부여해야 합니다.
15.
해설 : associate-kms-key : 기존에 존재하는 로그
*craete-log-group: 이것은 새 로그 그룹에 대해서만 작동합니다.
16.
해설 : s3 ssl - aws:secureTransport:false
여기는 진짜 공부 잘해야한다
'자격증공부 > AWS Certified Developer - Associate' 카테고리의 다른 글
AWS Certified Developer - Associate (DVA-C02) 후기 (0) | 2023.04.01 |
---|---|
AWS Certified Developer Associate 시험 합격을 위한 모든 것 - (26) (0) | 2023.03.31 |
AWS Certified Developer Associate 시험 합격을 위한 모든 것 - (24) (0) | 2023.03.31 |
AWS Certified Developer Associate 시험 합격을 위한 모든 것 - (23) (0) | 2023.03.31 |
AWS Certified Developer Associate 시험 합격을 위한 모든 것 - (22) (0) | 2023.03.31 |