IAM

장현웅·2023년 10월 29일
1

AWS Identity and Access Management(IAM)은 AWS 클라우드 환경에서 사용자 및 리소스에 대한 액세스를 효과적으로 관리하고 보안을 강화하는 데 중요한 도구입니다.

  1. 인증과 암호화

IAM은 사용자가 AWS 리소스에 접근할 때 인증을 통해 사용자의 신원을 확인하고, 해당 사용자에게 액세스 권한을 부여하거나 거부합니다. 사용자는 자신의 사용자 이름과 비밀번호를 사용하여 인증하며, 추가적인 요소로 다중 요소 인증(MFA)을 활용할 수 있습니다.

  1. 권한 부여와 권한 관리

IAM을 사용하여 사용자, 그룹 또는 역할에 대한 권한을 지정하고 관리할 수 있습니다. 이를 통해 특정 사용자 또는 역할이 AWS 서비스 및 리소스를 사용하는 데 필요한 권한만 부여할 수 있으며, 최소 권한 원칙을 준수하여 보안을 강화할 수 있습니다.

  1. 액세스 제어 및 리소스 보호

IAM을 사용하여 특정 사용자 또는 그룹의 액세스를 특정 AWS 리소스로 제한하거나 허용할 수 있습니다. 이로써 데이터와 리소스의 보안을 강화하고 민감한 정보를 보호할 수 있습니다.

  1. 로그 및 감사

IAM을 통해 모든 사용자 활동을 모니터링하고 로그를 수집할 수 있습니다. 이를 통해 보안 이슈를 감지하고 조치를 취할 수 있으며, 규정 준수 및 감사 요구 사항을 충족시킬 수 있습니다.

  1. 시간별 권한 할당

IAM을 사용하여 특정 사용자에게 필요한 권한을 특정 시간대에만 부여할 수 있습니다. 이것은 일시적인 작업에 대한 권한을 제공하고 나머지 시간에는 권한을 제한하는 데 유용합니다.


IAM 서비스는 지역별로 제공되는 서비스가 아닌 Global 서비스로, 회원가입 시 만든 Root Account는 사용/공유되지 않아야 하기 때문에 IAM 사용자를 생성하고 그 사용자에게 필요한 권한을 부여함으로써 보안을 강화하고 AWS 리소스에 대한 액세스를 관리할 수 있습니다. Root Account는 초기에 생성되는 AWS 계정의 최상위 계정으로 모든 AWS 리소스에 대한 최상위 권한을 갖습니다. 그러나 보안 및 규정 준수 측면에서 권한을 최소한으로 유지하는 것이 좋습니다. 따라서 Root 계정은 일상적인 작업 및 액세스에 사용하지 않아야 하며 비상 시나 계정 설정을 변경하는 경우에만 사용되어야 합니다. 그래서 대신 IAM 사용자를 생성하고 권한을 부여하여 작업을 수행해야 합니다.

IAM을 사용할 때, 일반적으로 사용자(User)와 그룹(Group)을 만들어서 리소스에 대한 액세스를 관리합니다. 사용자 및 그룹을 만들고 액세스 권한을 관리함으로써, AWS 리소스에 대한 액세스를 세밀하게 제어할 수 있고, 악의적인 또는 실수로 인한 보안 위협을 줄이고 중요한 데이터 및 리소스를 보호할 수 있습니다. 또한, 사용자와 그룹을 사용하면 팀 또는 업무 역할에 따라 액세스 권한을 그룹화하여 관리할 수 있습니다. 그룹화를 통해 유사한 권한을 가진 사용자들을 효과적으로 관리할 수 있으며, 새로운 사용자가 추가되거나 기존 사용자가 제거될 때 변경을 쉽게 적용할 수 있습니다.

이렇게 만들어진 User와 Group들은 IAM 정책(Policy)을 통해 액세스 권한을 조정합니다. IAM 정책은 JSON 형식으로 작성되며, 정책은 특정 작업과 리소스에 대한 권한을 지정합니다. 예를 들어, 정책은 특정 S3 버킷에 대한 읽기 권한 또는 EC2 인스턴스를 시작하고 중지할 수 있는 권한과 같은 권한을 정의할 수 있습니다. 정책은 IAM 그룹 레벨에서 관리하므로 그룹에 속한 모든 사용자에게 일괄적으로 적용됩니다.

사용자 또는 그룹에 IAM 정책을 연결하여 해당 엔터티에 액세스 권한을 부여하고, 정책을 통해 필요한 권한을 조정할 수 있습니다. 보통 최소 권한 원칙을 따르며, 필요한 권한만을 부여하고 불필요한 권한을 제거하여 보안을 강화합니다.

Policy Structure

{
  "Version": "policy-version",
  "Statement": [
    {
      "Effect": "allow-or-deny",
      "Action": ["action-name"],
      "Resource": ["resource-arn"],
      "Condition": {
        "condition-operator": {
          "condition-key": "condition-value"
        }
      }
    }
  ]
}
  • Version: 정책의 버전을 나타냅니다. 현재는 "2012-10-17" 에서 고정되었습니다.
  • Statement: 정책의 규칙을 나타냅니다. 배열 형태로 여러 개의 규칙을 작성할 수 있습니다.
  • Effect: 규칙의 적용 여부를 나타냅니다. "allow" 또는 "deny" 중 하나를 선택합니다.
  • Action: 규칙이 적용되는 작업의 종류를 나타냅니다. 예를 들어 "s3:ListBucket"과 같은 형식으로 작성합니다.
  • Resource: 규칙이 적용되는 리소스의 ARN (Amazon Resource Name)을 나타냅니다. 예를 들어 "arn:aws:s3:::my-bucket/*"과 같은 형식으로 작성합니다.
  • Condition: 규칙이 적용되는 조건을 나타냅니다. 필수는 아니며, 필요한 경우 추가할 수 있습니다. 다양한 조건 연산자를 사용할 수 있습니다. 예를 들어 "IpAddress" 조건 연산자를 사용하면 특정 IP 주소에서만 작업을 수행할 수 있도록 제한할 수 있습니다.

MFA (Multi-Factor Authentication)

다중 인증 요소(MFA)는 일반적인 사용자 ID와 비밀번호 입력 외에 두 개 이상의 추가적인 인증 요소를 조합하여 사용자를 인증하는 보안을 강화한 방법입니다.

  1. 비밀번호 또는 PIN(개인 식별 번호)
  2. 디지털 디바이스인 스마트폰, 하드웨어 토큰, 또는 인증 앱 등

두 인증 요소를 함께 조합하여 사용자를 확인하고 인증합니다. 이는 보안을 강화하고, 단순한 비밀번호만을 사용하는 경우보다 더 안전한 액세스를 제공합니다.

MFA를 사용하면 사용자의 로그인 정보가 유출되었을 경우에도 보안을 유지할 수 있습니다. 예를 들어, 악의적인 공격자가 사용자의 ID와 비밀번호를 훔쳐서 로그인을 시도해도, MFA를 사용하면 추가적인 인증 요소를 입력하지 않는 한 로그인이 불가능합니다. 이를 통해 AWS와 같은 클라우드 서비스에서는 중요한 데이터와 리소스를 안전하게 보호할 수 있습니다.

1개의 댓글

comment-user-thumbnail
2023년 10월 31일

일목요연하게 잘 정리해주셨네요!

답글 달기