<1> S3 버킷 권한 주기
<2> 설정법
<3> 예제) 특정 사용자가 리스트하고 다운로드만 가능하도록 해주세요.
<1> S3 버킷 권한 주기
1. Cli로 S3 Bucket list 확인하고 , 데이터를 올리고, 내리고, 삭제 하려하고 한다. (API 계정 사용)
2. Console로 S3 Bucket 데이터를 List확인하고, 올리고, 내리고, 삭제 하려하고 한다.
<3> 설정법
1. 계정과 권한 생성
IAM계정 : 100
- console 계정 , 프로그래밍 방식 액세스를 활성화
- access-key, secrey key 파일을 다운로드 받는다.
2. 테스트 서버만들기
windows pc ------ linux ec2 ----- s3 환경
1) linux ec2 서버 만들기
- 아마존 리눅스로 설치한다. aws cli가 기본 설치 되어 있다.
putty download
[root@ip-172-31-13-93 ~]# aws --version
aws-cli/1.16.102 Python/2.7.16 Linux/4.14.123-111.109.amzn2.x86_64 botocore/1.12.92
OS별 awscli 설치 법
MAC이면
MAC --- S3 구성이다.
3. s3 버킷 만들기
버킷 이름 : 100-s3
디폴트로 설정한다. Block all Public access[OFF]
not Public으로 버킷을 만든다.
Public access를 허용해야 정책 적용에 의미가 있다.
접속 하지 못하는데 정책 적용은 의미가 없다.
4. Linux EC2에서 S3 관리하기
IAM으로 계정생성시 다운로드 받은 access key와 secret key를 확인한다.
EC2 로그인
aws configure
Default region name [None]: ap-northeast-2
[root@ip-10-0-0-32 ~]# aws s3 ls
An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
5. 권한 부여하기
S3 버킷에 policy를 주면 된다.
S3에서 제어하는 설정이다.
1) s3 버킷 policy 만들기
s3 > 해당 버킷 > Permissions > Buckey Policy > Policy generator 로 만들어 policy에 주면 된다.
2) Principal은 iam에서 User ARN 확인 입력 : arn:aws:iam::115577473184:user/100
3) s3 arn 확인 : arn:aws:s3:::100-s3
Amazon Resource Name (ARN) 입력
4) Generate Policy
S3 Buckey Policy에 복사한다.
6. Cli로 S3 Bucket list 확인하고 , 데이터를 올리고, 내리고, 삭제 하는법. (API 계정 사용)
방법1. S3 Buckey Policy에 적용한다.
Generate Policy 로 만든다.
1) Bucket 안의 Object에 대한 Action을 정의한다.
Delete object , getobject , putobject 로 Action을 취한다.
ARN을 arn:aws:s3:::100-s3/* 로 지정한다. (중요한 부분)
2번째 Action은 Buckt에 대한 정책을 만든다.
ARN을 arn:aws:s3:::100-s3 로 지정한다.
{
"Id": "Policy1566805503954",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1566805325842",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::100-s3/*",
"Principal": {
"AWS": [
"arn:aws:iam::115577473184:user/100"
]
}
},
{
"Sid": "Stmt1566805497594",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::100-s3",
"Principal": {
"AWS": [
"arn:aws:iam::115577473184:user/100"
]
}
}
]
}
방법2. 계정 100에 Policy 적용한다.
> Generate Policy
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::100-s3"
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::100-s3/*"
}
]
}
Policy 예제 참고
S3 ARN 확인법 - 버킷 클릭하면 오른쪽에 나온다.
7. Linux EC2에서 aws s3 ls로 버킷 리스트 확인한다.
명령어 사용법
# aws 서비스 ls
[root@ip-10-0-0-32 ~]# aws s3 ls
2019-08-24 01:26:40 100-s3
참고 : 정책을 잘못 설정하면 안된다.
혹, 급하게 적용 해야하면 그룹에 권한을 주면 해결은 된다.
8. Console로 S3 Bucket 데이터를 List확인하고, 올리고, 내리고, 삭제 하려하는 설정
요약 : Poilcy를 만들고 Poilcy를 100계정에 넣는다.
IAM > Create policy
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Resource": "*"
}
]
}
참고 : 위 Policy를 적용하면 API로도 Bucket List확인이 가능해진다.
<3> 예제) 특정 사용자가 리스트하고 다운로드만 가능하도록 해주세요.
1
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111:user/seo-user1"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::seo-s3-1"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::11111111:user/seo-user1"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::seo-s3-1/*"
}
]
}
2
버킷에 리스트 확인법
aws s3 ls s3://seo-s3-1
3
다운로드 가능합니다.
aws s3 cp s3://seo-s3-1/test1.txt .
4
put은 안됩니다.
aws s3 cp pc1.txt s3://seo-s3-1/
참고
S3 버킷 정책 예제 문서
감사합니다.