암호화해서 서버에서 S3로 데이터를 올리고 내려보자
1
Amazon S3 (SSE-S3) = 서버 사이트 암호화-S3 = AWS 관리 , 정기적으로 순환됨
2
KMS (SSE-KMS) = 서버 사이트 암호화-키 관리 서비스 = 사용자 마스터기 CMK를 사용한 서버 측 암호화, 사용자가 관리
3
SSE-C = 서버 사이트 암호화- 고객 = 사용자 키를 사용한 서버 측 암호화
1
테스트해볼 생각이면, EC2를 만들어 Access-key를 사용해도 되고,
EC2에 S3 role을 적용해 사용해도 된다.
EC2에 S3 role을 적용 시 세션 매니저를 사용하려면, ssm, ssmmessages 권한도 부여하자.
테스트 이면 admin-role을 만들어 ec2에 부여해해 보자.
여기서는 test ec2를 하나 만들고 EC2에 admin-role을 부여하여 테스트한다.
admin-role을 만들고, ec2 보안에서 admin-role을 연결하면 된다.
cloudformation으로 ec2 하나 만들어 보자
서울 리전
ec2 key-pairs는 미리 하나 만들자
seo-s3 test-keypairs.ppk
seo-admin-role을 만들고(iam), ec2 보안에서 admin-role을 연결하면 된다.
or
1
IDC 서버에서 S3로 데이터를 올리려면 AWS Access-key가 필요하다.
AWS에서 Awccess-key를 만들고, S3 권한을 받자.
2
EC2 로그인
ec2에서 연결에서 접속 또는 연결에서 세션 매니저로 접속
1
서버-------S3 구성이다
2
S3 버킷 만들기
[ec2-user@ip-172-31-10-129 ~]$ aws s3 mb s3://seo-bucket11
make_bucket: seo-bucket11
버킷 이름 적어 놓기
s3 명령어
3
버킷에 파일 하나 올리기
touch 111
touch 222
touch 333
touch 444
확인
bucket=seo-bucket11
aws s3api list-objects-v2 --bucket $bucket --query 'Contents[].{Key: Key}'
aws s3 cp 111 s3://${bucket}
4
올라간것 확인
aws s3api list-objects-v2 --bucket $bucket --query 'Contents[].{Key: Key}'
5
AWS console에서 암호화된 내용 확인하기
111 파일 클릭해서 확인
6
디폴트 세팅 확인하기
s3 > seo-bucket11 > Properties > 아래 Default encryption 확인 : Disabled
111 파일 클릭 > Properties > Edit > Servr-side encryption settings > Enable > Amazon S3 key (SSE-S3)로 변경 > 저장
1
seo-bucket11 > Properties > 아래 Default encryption > Edit > Enable > Amazon S3 key (SSE-S3)로 변경 > 저장
참고
https://docs.amazonaws.cn/en_us/AmazonS3/latest/userguide/default-bucket-encryption.html
2
파일 222 올리기
aws s3 cp 222 s3://${bucket}
3
AWS 콘솔 > S3에서 확인
222 파일 클릭 > Servr-side encryption settings에서 확인
Default encryption
Enabled
Server-side encryption
Amazon S3 master-key (SSE-S3)
1
aws s3 cp 333 s3://${bucket} --sse aws:kms
2
AWS 콘솔에서 확인하기
333 파일 클릭
Server-side encryption settings
AWS Key Management Service key (SSE-KMS) 확인함
1
AWS 콘솔 > Permission (버켓 정책)에 적용하기
aes256으로 적용
seo-bucket11
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/UsingServerSideEncryption.html
2
kms로 올려보기
실패
[ec2-user@ip-172-31-10-129 ~]$ aws s3 cp 444 s3://${bucket} --sse aws:kms
upload failed: ./444 to s3://seo-bucket11/444 An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
3
AES256으로 올리기
성공
[ec2-user@ip-172-31-10-129 ~]$ aws s3 cp 444 s3://${bucket} --sse AES256
upload: ./444 to s3://seo-bucket11/444
https://aws.amazon.com/ko/premiumsupport/knowledge-center/s3-bucket-store-kms-encrypted-objects/
1
[ec2-user@ip-172-31-10-129 ~]$ mkdir ddd
[ec2-user@ip-172-31-10-129 ~]$ cd ddd
2
[ec2-user@ip-172-31-10-129 ddd]$ aws s3api get-object --bucket $bucket --key 111 111 --endpoint-url http://s3.amazonaws.com
{
"AcceptRanges": "bytes",
"ContentType": "binary/octet-stream",
"LastModified": "Thu, 12 Aug 2021 01:09:55 GMT",
"ContentLength": 0,
"ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
"ServerSideEncryption": "AES256",
"Metadata": {}
}
3
[ec2-user@ip-172-31-10-129 ddd]$ ls
111
1
암호화되지 않은 HTTP로는 다운로드 안되게 S3 버킷에 정책 적용함
https://aws.amazon.com/ko/premiumsupport/knowledge-center/s3-bucket-policy-for-config-rule/
2
테스트
안됨
[ec2-user@ip-172-31-10-129 ddd]$ aws s3api get-object --bucket $bucket --key 222 222 --endpoint-url http://s3.amazonaws.com
An error occurred (AccessDenied) when calling the GetObject operation: Access Denied
3
https로 변경해 다운로드
잘됨
[ec2-user@ip-172-31-10-129 ddd]$ aws s3api get-object --bucket $bucket --key 222 222 --endpoint-url https://s3.amazonaws.com
{
"AcceptRanges": "bytes",
"ContentType": "binary/octet-stream",
"LastModified": "Thu, 12 Aug 2021 01:15:17 GMT",
"ContentLength": 0,
"ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
"ServerSideEncryption": "AES256",
"Metadata": {}
}
[ec2-user@ip-172-31-10-129 ddd]$ ls
111 222
기타
https://aws.amazon.com/ko/premiumsupport/knowledge-center/decrypt-kms-encrypted-objects-s3/
https://brunch.co.kr/@topasvga/1759
같이 볼만한 자료
https://brunch.co.kr/@topasvga/2928
감사합니다.