소소한개발팁
article thumbnail
반응형

IAM 기본 개념

AWS Identity and Access Management (IAM)은 Amazon Web Services (AWS)에서 제공하는 서비스 중 하나로, 사용자 및 리소스에 대한 액세스를 안전하게 제어하는 데 사용됩니다. IAM은 기본적으로 보안 및 권한 부여를 효과적으로 관리하기 위한 도구를 제공하며, 사용자, 그룹, 역할, 정책 등 다양한 개념들을 포함하고 있습니다.

 

사용자 (Users)

IAM에서 사용자는 AWS 계정에 액세스하는 개체입니다. 각 사용자는 고유한 보안 자격 증명(액세스 키 및 비밀 액세스 키)을 가지며 해당 자격 증명을 사용하여 AWS 리소스에 액세스합니다.

 

AWS IAM에서 사용자를 생성하고 관리하는 것은 기본적인 보안 설정 중 하나입니다. 

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iam:CreateUser",
      "Resource": "*"
    }
  ]
}

 

이 정책은 CreateUser 액션을 모든 리소스에 허용하는데, 이는 사용자를 생성할 수 있는 권한을 가진 정책입니다.

그룹 (Groups)

그룹은 여러 사용자를 묶어서 그룹에 권한을 부여함으로써 중앙 집중식으로 권한을 관리할 수 있습니다.
한 번에 여러 사용자에게 동일한 권한을 적용하는 데 사용됩니다.


그룹을 사용하면 여러 사용자에게 일괄적으로 권한을 할당할 수 있습니다. 

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::example-bucket"
    }
  ]
}

 

이 정책은 S3 버킷의 목록을 볼 수 있는 권한을 가진 그룹을 생성합니다.

역할 (Roles)

역할은 AWS 리소스 간에 권한을 안전하게 전달하는 데 사용됩니다. 예를 들어, EC2 인스턴스나 Lambda 함수 등에서 특정 권한이 필요한 경우 해당 역할을 생성하고 부여함으로써 필요한 권한을 제공할 수 있습니다.


역할은 특정 서비스나 리소스에 대한 권한을 다른 AWS 계정이나 서비스에게 부여하는 데 사용됩니다. 

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "dynamodb:GetItem",
      "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/ExampleTable"
    }
  ]
}

 

이 정책은 DynamoDB 테이블에서 GetItem 액션을 수행할 수 있는 역할을 생성합니다.

 

IAM 정책

IAM 정책은 JSON 형식의 문서로, 특정 작업(Action)에 대한 권한을 정의합니다. Effect(허용 또는 거부), Action(수행할 작업), Resource(적용 대상 리소스) 등을 정의합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:Describe*",
      "Resource": "*"
    },
    {
      "Effect": "Deny",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}

 

이 정책은 EC2에 대한 모든 Describe 액션은 허용하고, S3에 대한 모든 액션은 거부합니다.

정책의 할당과 관리
정책은 사용자, 그룹, 역할에 할당됩니다. 다음은 사용자에게 정책을 할당하는 예시입니다

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::example-bucket"
    }
  ]
}

 

이 정책은 사용자에게 특정 S3 버킷을 목록할 수 있는 권한을 제공합니다.

조건부 정책
조건부 정책을 사용하면 특정 조건이 충족될 때만 권한을 부여할 수 있습니다. 다음은 IP 주소를 기반으로 액세스를 제한하는 예시입니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::example-bucket/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "203.0.113.0/24"
        }
      }
    }
  ]
}

 

이 정책은 특정 IP 대역에서만 S3 버킷에 객체를 업로드할 수 있는 권한을 제공합니다.

 

반응형

 

IAM 보안

다중 인증 (Multi-Factor Authentication, MFA):
다중 인증은 사용자가 추가적인 인증 단계를 통과해야만 액세스를 허용하는 기능으로 보안을 강화합니다

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::example-bucket/*",
      "Condition": {
        "Bool": {
          "aws:MultiFactorAuthPresent": "true"
        }
      }
    }
  ]
}

 

이 정책은 MFA가 활성화된 사용자에게만 S3 버킷의 객체를 가져올 수 있는 권한을 제공합니다.

 

IAM 사용 사례

EC2 인스턴스, Lambda 함수, S3 버킷 등 AWS의 다양한 서비스에서 IAM을 사용하여 보안을 강화하고 권한을 효과적으로 관리합니다. IAM은 AWS에서의 보안과 권한 관리를 중심으로 하는 핵심 서비스로, 이러한 이론적인 개념을 이해하면 AWS 리소스에 대한 안전한 액세스를 효과적으로 구현할 수 있습니다.

 

EC2 인스턴스에 IAM 역할 할당
EC2 인스턴스에 IAM 역할을 할당하여 필요한 권한을 인스턴스에 부여할 수 있습니다. 다음은 EC2 인스턴스에 S3 버킷에 객체를 업로드할 수 있는 역할을 할당하는 예시입니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::example-bucket/*"
    }
  ]
}

 

이 역할은 EC2 인스턴스에서만 특정 S3 버킷에 객체를 업로드할 수 있는 권한을 제공합니다.

Lambda 함수에 IAM 역할 적용
서버리스 환경에서는 Lambda 함수에 IAM 역할을 적용하여 필요한 권한을 부여할 수 있습니다. 다음은 S3 버킷에서 객체를 삭제할 수 있는 Lambda 함수에 할당된 IAM 역할의 예시입니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:DeleteObject",
      "Resource": "arn:aws:s3:::example-bucket/*"
    }
  ]
}
반응형
profile

소소한개발팁

@개발자 뱅

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!