[AWS] AWS Cloud Technical Essentials - AWS Identity and Access Management 정리 노트
by 구설구설AWS ID 및 액세스 관리
AWS에 로그인하는 사용자는 유효한 자걱 증명이 필요하며, AWS 리소스에 접근할 때에도 적절한 인증이 필요하다.
AWS IAM은 이중 AWS 계정에 접근하는 자격과 AWS 리소스에 접근하는 자걱을 관리할 수 있게 해준다.
IAM
- IAM은 AWS 계정과 리소스에 대한 접근을 관리할 수 있도록 하는 웹 서비스이다.
- IAM을 통해 계정 내 리소스에 대한 인증과 권한을 중앙에서 관리할 수 있으며, 사용자는 필요에 맞게 세부적인 접근 권한을 부여받을 수 있다.
- 액세스 키나 비밀번호를 공유하지 않고도 권한을 공유할 수 있으며, MFA와 ID 연합을 지원한다.
- IAM은 모든 AWS 사용자에게 추가 비용 없이 제공된다.
IAM 사용자와 그룹
IAM 사용자는 AWS와 상호작용하는 사람 또는 서비스로, 각 사용자에게는 고유한 자격 증명과 권한이 부여된다. 개별 사용자에게 직접 권한을 부여할 수 있지만, 그룹을 사용하면 여러 사용자에게 공통된 권한을 한 번에 부여할 수 있어 관리가 더 효율적이다. 그룹에 속한 사용자는 해당 그룹의 권한을 상속받으며, 사용자는 여러 그룹에 속할 수 있다.
IAM 정책
IAM 정책은 AWS 서비스와 리소스에 대한 접근 권한을 정의하는 JSON 문서이다.
정책은 사용자, 그룹 또는 역할에 적용되며, 요청 시 AWS가 해당 정책을 평가해 접근을 허용할지 결정한다.
~Effect~ | 정책 문이 접근을 허용하는지 거부하는지 지정 | ✔ | "Effect": "Deny" |
~Action~ | 허용하거나 거부할 작업을 설명 | ✔ | "Action": "iam:CreateUser" |
~Resource~ | 정책 문이 적용되는 객체를 지정 | ✔ | "Resource": "arn:aws:iam::account-ID-without-hyphens:user/Bob" |
IAM 정책 예시
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}]
}
관리자의 IAM 정책으로, 모든 것을 허용하고 있다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:ChangePassword",
"iam:GetUser"
],
"Resource": "arn:aws:iam::123456789012:user/${aws:username}"
}
]
}
이 정책은 IAM 사용자가 자신의 비밀번호를 변경하고 자신의 사용자 정보를 확인할 수 있도록 허용한다.
~${aws:username}~ 변수를 사용하여 각 사용자가 자신의 자격 증명에만 접근할 수 있게 제한하고 있다.
IAM Role
- IAM Role은 AWS에서 임시 자격 증명을 제공하는 ID로, AWS 서비스나 외부 사용자에게 필요한 권한을 부여하는데 사용된다.
- IAM 사용자는 고정된 자격 증명(액세스 키, 비밀번호)를 가지지만, IAM Role은 자격 증명이 임시로 발급되며 자동 갱신된다.
- IAM 사용자와 그룹에게 적용하고자 하는 정책을 정리해놓은 프리셋과 같다고 보면 된다.
IAM Role의 주요 기능
- 임시 자격 증명 제공:
- EC2 인스턴스에 애플리케이션이 실행 중일 때, S3와 같은 서비스에 접근하려면 IAM 역할을 통해 임시 자격 증명을 획득함.
- 이를 통해 액세스 키와 비밀번호를 따로 생성하지 않고도, 애플리케이션이 API 호출을 서명하고 AWS 자원에 접근 가능.
- AWS 서비스 간 역할 사용:
- 같은 AWS 계정 내에서도 서비스 간 API 호출은 역할 기반 접근을 통해 수행됨.
- 서비스는 역할을 통해 임시 자격 증명을 얻고 API 요청을 실행.
- 외부 ID 제공자와 연동:
- 기업 내 수천 명의 기술 인력을 위한 별도의 IAM 사용자 계정을 만들 필요 없이, 기존의 ID 제공 시스템을 AWS와 연동하여 IAM 역할을 가정할 수 있음.
- 이를 통해 ~연합 사용자(federated users)~가 AWS 리소스에 접근 가능.
AWS의 Role Based Access
AWS 내에서 IAM을 하용할 때의 모범사례를 소개한다고 한다.
- 루트 사용자 잠금
- 루트 사용자는 AWS 계정 내에서 모든 권한을 가지므로, 보안 위협에 가장 취약하다.
- 루트 사용자 자격 증명은 절대 공유하지 말고, 가능하면 액세스 키를 삭제하며, ~MFA(다중 인증)~를 활성화하여 계정을 보호해야 한다
- 최소 권한 원칙 적용
- 최소 권한 원칙은 특정 작업을 수행하는 데 필요한 최소한의 권한만 부여하는 보안 원칙이다.
- IAM 정책에서 기본적으로 최소 권한을 부여하고, 필요할 때 추가 권한을 부여하는 방식으로 접근을 제어해야 한다.
- IAM 적절하게 사용
- IAM은 AWS 계정과 리소스에 대한 접근을 관리하는 도구로, 웹사이트 사용자 인증 및 승인 용도로는 적합하지 않다.
- IAM은 운영 체제나 네트워크 보안을 관리하지 않으므로, 시스템 및 네트워크 보호를 위해 다른 보안 도구를 사용해야 한다.
- 가능한 한 IAM 역할 사용
- IAM 역할은 사용자를 관리하는 것보다 관리가 용이하다. 역할을 통해 임시 자격 증명을 제공하며, 이 자격 증명은 15분에서 36시간 사이에 자동으로 만료된다.
- 반면, IAM 사용자는 고정된 자격 증명을 가지며, 자격 증명은 관리자가 회전시키기 전까지 유효하다.
- ID 제공자(IdP) 사용 고려
- 회사 규모가 커지고 직원 수가 많아지면, ~ID 제공자(IdP)~를 통해 직원들의 신원을 관리하는 것이 효율적이다.
- AWS IAM Identity Center 또는 타사 ID 제공자를 사용하면, 하나의 시스템에서 모든 직원의 신원을 관리할 수 있으며, 각 AWS 계정에 별도의 IAM 사용자를 생성할 필요가 없다.
- 예를 들어, Martha라는 직원이 여러 AWS 계정에 접근해야 한다면, 각 계정에 별도의 사용자를 만들 필요 없이 IdP에서 역할을 부여하여 권한을 관리할 수 있다.
- AWS IAM Identity Center 사용 고려
- 여러 직원과 다수의 AWS 계정을 관리하는 경우, AWS IAM Identity Center를 사용하여 직원들이 단일 자격 증명으로 로그인하고, 중앙 포털에서 모든 계정 및 애플리케이션에 접근할 수 있게 할 수 있다.
- AWS IAM Identity Center는 IAM과 유사하게 사용자를 생성하고 그룹을 조직하여 권한을 부여할 수 있다. 그러나 IdP와 동기화 기능을 통해 타사 IdP와의 연동이 더욱 수월하다.
- 이를 통해 클라우드 접근 관리와 IdP를 분리하여, AWS 리소스 접근 관리가 IdP에 종속되지 않도록 보안성을 높일 수 있다.
블로그의 정보
공부중임
구설구설