s3버킷에 대해 접근을 제어 하는 방식은 아래와 같이 버킷 정책, ACL, IAM 제어 3가지가 있다
아래와 같이 버킷정책을 사용하면 퍼블릭 액세스 막을 수 있음
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicListGet",
"Effect": “Deny”,
"Principal": "*",
"Action": "*",
"Resource": [
"arn:aws:s3:::printcity-image",
"arn:aws:s3:::printcity-image/*"
],
"Condition": {
"StringNotEquals": {
"aws:Referer": [
"https://www.my-site.com/*",
"https://www.my-site2.com/*",
]
},
"NotIpAddress" : {
"aws:SourceIp": “여기에 아이프 123.123.1.0"
}
}
}
]
}
Sid: statement Id의 약자이고 지금은 하나인데 여려개를 쓸 때, 각각의 statement를 식별할 때 사용한다
Effect: 여기에는 Allow랑 Deny 둘 중에 하나가 올 수 있다 (대소문자 구분 주의) default 값은 deny이다
Principal: 이 요소는 사용자, 계정, 서비스 또는 리소스에 대한 액세스의 주체를 지정합니다.
Action : putObject,getObject, get bucket 처럼 이 버킷에 어떤 액션에 대해 제어를 할 것인지 쓰면된다
Action:[ "s3:PutObject", "s3:PutObjectAcl" ] 이런식으로 쓸 수 있다
예제에서는 *로 모든 action을 지칭한다
Resource: 어떤 객체나 폴더에 이 정책을 적용할 것인지를 쓰는 부분인다
arn은 아마존 리소스 네임의 약자이고
아래에서 어떤 규칙으로 쓰는 건지 확인 할 수 있다
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference-arns.html
Condition: 이 부분에 조건들을 쓸 수 있다.
위에 써진 내용은 StringNotEquals:{"aws:Referer":} 이부분은 referer헤더와 문자열이 같지 않으면 이라는 뜻
NotIpAddress: "aws:sourceIp"이 부분은 해당 ip가 아니라면 이라는 뜻
'infra, cloud > aws' 카테고리의 다른 글
ecr, ecs, fargate (0) | 2023.09.14 |
---|---|
Serverless framework의 배포 과정 (0) | 2023.08.22 |
[CloudFront]클라우드 프론트 (0) | 2023.07.28 |