s3 λ²ν· μ μ±
μ΄λ?
aws s3μ λ²ν·μ λ§λ€κ³ νλμ μ΄λ―Έμ§ νμΌμ μ
λ‘λ ν ν΄λΉ μ΄λ―Έμ§μ μ£Όμλ₯Ό νΈμΆν΄ 보면 μλ μ΄λ―Έμ§μ κ°μ΄ Access Deniedμ€λ₯λ₯Ό λ°μμν€λ©΄μ μμΈμ€ λμ§ μλλ€.
μ΄λ° νμμ ν΄κ²°νκΈ° μν΄ μμ±ν s3λ²ν·μ λ²ν· μ μ±
μ΄λΌλ κ²μ μμ±ν΄μΌ ν©λλ€.
s3 λ²ν· μ μ±
μ΄λ μ¬μ©μκ° s3 λ²ν·μ μμΈμ€ ν μ μλ μ μ±
μ΅μ
μ€ νλ μ΄λ©° json λ¬Έλ²μ μ¬μ©νμ¬ λ²ν·μ λν μμΈμ€λ₯Ό μ μ΄ ν©λλ€.
s3κ° λ¬΄μμΈμ§? λ²ν·μ΄ 무μμΈμ§?μ λν κΆκΈμ¦μ λ€μ λ§ν¬λ₯Ό μ°Έκ³ νμκΈΈ λ°λλλ€.
λ€μμΌλ‘ aws s3μ λ²ν·μ μ± μ λν΄μ λ€μ 2κ°μ§ μ¬λ‘λ₯Ό μμ λ‘ μμλ΄ λλ€.
— μ¬λ‘ —
1. λͺ¨λ μ¬μ©μμ λν μ½κΈ° νμ©.
2. νΉμ IPλλ IPλμμ λν νμ©.
awss3buckettestλ²ν·μ λͺ¨λ μ¬μ©μκ° μ½κΈ° κΆν(GetObject) κ°μ§λ€.
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"PublicReadGetObject",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:GetObject",
"Resource":"arn:aws:s3:::awss3buckettest/*"
}
]
}
μ μ€μ μ λΆνΉμ μ¬μ©μκ° μΉλΈλΌμ°μ λ‘ awss3buckettest λ²ν·μ μ¬λ¦° νΉμ Objectλ₯Ό νΈμΆ ν μ μλ€κ³ μ΄ν΄νλ©΄ λ©λλ€.
νΉμ IPμλ§ μ½κΈ° κΆν λΆμ¬
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AllowIPs",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:GetObject",
"Resource":"arn:aws:s3:::awss3buckettest/*",
"Condition":{
"IpAddress":{
"aws:SourceIP":"192.168.0.0/24"
},
"NotIpAddress":{
"aws:SourceIP":"192.168.0.100/32"
}
}
}
]
}
μ μ€μ μ 192.168.0.0/24 λμμμ awss3buckettest λ²ν·μ GetObject μ κ·Όμ νμ©νλ€. νμ§λ§ κ·Έ μΈ IPλμκ³Ό 192.168.0.100 IP μ£Όμ μμμ μ κ·Όμ νμ©νμ§ μλλ€. μ κ·Όμ λ€μκ³Ό κ°μ μ€λ₯λ©μμ§λ₯Ό λΏλ¦°λ€.
s3 λ²ν·μ μ±
μμ μ¬λ¬κ°μ§ 쑰건μ μ§μ νλ λ°©λ²μ λ€μ λ§ν¬λ₯Ό μ°Έμ‘°ν©λλ€.
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/amazon-s3-policy-keys.html