반응형
IAM Policy (JSON 구조)
AWS IAM Policy은 AWS 리소스에 대한 액세스 권한을 정의한 것입니다.
IAM Policy은 JSON 형식으로 정의되며, IAM User, Group, Role, AWS 리소스에 대해 필요한 액세스 권한을 부여하거나 제한할 수 있다.
IAM Policy는 주로 다음과 같은 요소로 구성된다.
- Effect: "Allow (허용)" or "Deny (거부)"
- Action: AWS 리소스에서 어떤 작업을 실행할지 ("Action": "s3:PutObject" : S3 버킷에 객체를 업로드할 수 있는 권한)
- Resource: Action의 대상(AWS 리소스) ("Resource": "arn:aws:s3:::my-bucket/*" : 특정 S3 버킷의 모든 객체 )
- Principal: Action을 수행하려는 주체. 이는 특정 IAM User, Role이거나 AWS 서비스가 해당된다.
- "Principal": {"AWS": "arn:aws:iam::account-id:user/user-name"} : 특정 IAM 사용자
- "Principal": {"Service": "lambda.amazonaws.com"} : AWS Lambda 서비스
- Condition: Policy가 적용되는 조건 (예: 특정 IP 주소 범위에서의 액세스)
- "Condition": {"IpAddress": {"aws:SourceIp": "203.0.113.0/24"}} : 특정 IP 주소 범위에서의 액세스만 허용
"SID"라는 것도 있는데 이는 "Statement ID"의 약자로, IAM Policy의 Statement를 식별하기 위한 그냥 이름이다.
IAM Policy 예시:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
어떤 IAM User가 특정 IP 범위에서 S3 버킷에 파일을 업로드할 수 있게 허용하는 정책
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::example-bucket/*",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/JohnDoe"
},
"Condition": {
"IpAddress": {
"aws:SourceIp": "192.0.2.0/24"
}
}
}
]
}
728x90
반응형