IAM 사용자에 인라인 정책을 연결해 액세스 키 사용 제어하기
IAM 사용자에 인라인 정책을 연결해 액세스 키 사용 제어하기
모범 사례에 따라 워크로드는 IAM 역할로 임시 자격 증명을 사용해 AWS에 접근하는 것을 권장해요. 액세스 키가 있는 IAM 사용자는 최소 권한 접근을 할당하고 다중 인증(MFA)을 활성화해야 해요. IAM 역할 맡기에 대한 자세한 내용은 역할을 맡는 방법을 참고하세요.
다만 서비스 자동화의 개념 증명(PoC) 테스트나 다른 단기 사용 사례를 만들고, 액세스 키가 있는 IAM 사용자로 워크로드를 실행하기로 선택했다면, 정책 조건을 사용해 해당 IAM 사용자 자격 증명의 접근을 더 제한하는 것을 권장해요.
출처: 문서
본문
이 상황에서는 지정된 시간 후 자격 증명이 만료되는 시간 제한 정책을 만들거나, 보안 네트워크에서 워크로드를 실행한다면 IP 제한 정책을 사용할 수 있어요. 두 사용 사례 모두 액세스 키가 있는 IAM 사용자에 연결된 인라인 정책을 사용할 수 있어요.
IAM 사용자용 시간 제한 정책 구성 (To configure a time-bound policy for an IAM user)
- AWS Management Console에 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 열어요.
- 탐색 창에서 Users를 선택하고 단기 사용 사례에 사용할 사용자를 선택해요. 아직 사용자를 만들지 않았다면 지금 만들 수 있어요.
- 사용자 Details 페이지에서 Permissions 탭을 선택해요.
- Add permissions을 선택한 뒤 Create inline policy를 선택해요.
- Policy editor 섹션에서 JSON을 선택해 JSON 편집기를 표시해요.
- JSON 편집기에 다음 정책을 입력하고,
aws:CurrentTime타임스탬프 값을 원하는 만료 날짜·시간으로 바꿔요.
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"DateGreaterThan": {
"aws:CurrentTime": "2025-03-01T00:12:00Z"
}
}
}
]
}
이 정책은 Deny 효과를 사용해 지정된 날짜 이후의 모든 리소스에서 모든 액션을 제한해요. DateGreaterThan 조건은 현재 시간을 설정한 타임스탬프와 비교해요.
- Next를 선택해 Review and create 페이지로 진행해요. Policy 세부 정보의 Policy name에 정책 이름을 입력한 뒤 Create policy를 선택해요.
- 정책이 생성되면 사용자의 Permissions 탭에 표시돼요. 현재 시간이 정책에 지정된 시간보다 크거나 같아지면 사용자는 더 이상 AWS 리소스에 접근할 수 없어요. 워크로드 개발자에게 이 액세스 키에 대해 지정한 만료 날짜를 알려주세요.
IAM 사용자용 IP 제한 정책 구성 (To configure an IP restriction policy for an IAM user)
- AWS Management Console에 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 열어요.
- 탐색 창에서 Users를 선택하고 보안 네트워크에서 워크로드를 실행할 사용자를 선택해요. 아직 사용자를 만들지 않았다면 지금 만들 수 있어요.
- 사용자 Details 페이지에서 Permissions 탭을 선택해요.
- Add permissions을 선택한 뒤 Create inline policy를 선택해요.
- Policy editor 섹션에서 JSON을 선택해 JSON 편집기를 표시해요.
- 다음 IAM 정책을 JSON 편집기에 복사하고 공용 IPv4 또는 IPv6 주소 또는 범위를 필요에 맞게 바꿔요. 현재 공용 IP 주소를 확인하려면 https://checkip.amazonaws.com/ 을 사용할 수 있어요. 개별 IP 주소나 슬래시 표기법의 주소 범위를 지정할 수 있어요. 자세한 내용은 aws:SourceIp를 참고하세요.
참고 – IP 주소는 VPN이나 프록시 서버로 난독화되지 않아야 해요.
{
"Version":"2012-10-17",
"Statement": [
{
"Sid":"IpRestrictionIAMPolicyForIAMUser",
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"203.0.113.0/24",
"2001:DB8:1234:5678::/64",
"203.0.114.1"
]
},
"BoolIfExists": {
"aws:ViaAWSService": "false"
}
}
}
]
}
이 정책 예시는 이 정책이 적용된 IAM 사용자의 액세스 키 사용을, 요청이 CIDR 표기법으로 지정된 네트워크 "203.0.113.0/24", "2001:DB8:1234:5678::/64", 또는 특정 IP 주소 "203.0.114.1"에서 발생하지 않는 한 거부해요.
- Next를 선택해 Review and create 페이지로 진행해요. Policy 세부 정보의 Policy name에 정책 이름을 입력한 뒤 Create policy를 선택해요.
- 정책이 생성되면 사용자의 Permissions 탭에 표시돼요.
AWS Organizations의 여러 AWS 계정에 걸쳐 이 정책을 서비스 제어 정책(SCP)으로 적용할 수도 있어요. 이 경우 추가 조건 aws:PrincipalArn을 사용해 이 정책 문이 SCP의 적용을 받는 AWS 계정 내 IAM 사용자에게만 적용되도록 하는 것을 권장해요. 다음 정책이 그 업데이트를 포함해요.
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "IpRestrictionServiceControlPolicyForIAMUsers",
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"203.0.113.0/24",
"2001:DB8:1234:5678::/64",
"203.0.114.1"
]
},
"BoolIfExists": {
"aws:ViaAWSService": "false"
},
"ArnLike": {
"aws:PrincipalArn": "arn:aws:iam::*:user/*"
}
}
}
]
}