코딩관계론

AWS - IAM 본문

AWS

AWS - IAM

개발자_티모 2023. 3. 25. 13:18
반응형

IAM

사용 이유

AWS IAM은 AWS 계정에 대한 사용자, 그룹 및 역할을 관리하고, 각각의 역할에 대한 최소한의 권한만 부여하여 AWS 리소스에 대한 보안성을 유지하고 보호하는 데 사용됩니다.

 

IAM Group

사용 이유

AWS IAM에서는 그룹을 사용하여 여러 유저에게 동일한 권한을 부여하거나, 한 유저에게 여러 권한을 할당하는 대신에 여러 그룹에 권한을 부여할 수 있습니다. 또한, 최소한의 권한을 부여하는 것이 보안에 더욱 안전한 방법이기 때문에 IAM 권한을 부여할 때 최소한의 권한 원칙을 따르는 것이 좋습니다.

 

특징

AWS IAM 그룹에는 다른 그룹도 포함될 수 있습니다. 그리고 유저는 여러 그룹에 속할 수 있지만, 하나의 그룹에 대해 중복으로 속할 수는 없습니다.

 

 

IAM Policy

존재 이유

IAM Policy는 AWS 계정의 리소스에 대한 액세스를 규정하는 문서입니다. 정책은 사용자, 그룹, 역할 등의 AWS ID에 적용될 수 있으며, 특정 작업 또는 서비스에 대한 권한을 정의합니다.

 

특징

  • IAM Policy는 AWS 계정의 리소스에 대한 액세스를 규정하는 문서이며, 일종의 규칙 집합입니다.
  • 사용자, 그룹, 역할 등의 AWS ID에 적용될 수 있으며, 특정 작업 또는 서비스에 대한 권한을 정의합니다.
  • IAM Policy는 JSON 형식으로 작성되며, JSON 문법에 따라 작성해야 합니다.
  • 사용자, 그룹 또는 역할에 직접 연결되어 있는 인라인 정책과, 여러 리소스나 다른 정책과 연결되어 있는 관리형 정책으로 나눌 수 있습니다.
  • 그룹에는 여러 사용자를 포함시킬 수 있으며, 사용자는 여러 그룹에 속할 수 있습니다. 이때 사용자가 속한 그룹에서 설정된 정책들을 상속받아 권한을 얻게 됩니다.
  • 그룹이 없는 사용자에게는 인라인 정책을 직접 부여할 수 있습니다. 이 경우, 사용자에게 부여된 인라인 정책이 우선적으로 적용됩니다.

 

 

IAM Policy의 Json 필드 설명

IAM 정책에서는 "Effect", "Action", "Resource", "Condition" 등의 필드를 사용하여 권한 부여를 규정합니다.

  • Effect: 권한 부여 또는 거부 여부를 지정합니다. "Allow" 또는 "Deny" 값을 가집니다.
  • Action: 수행 가능한 작업을 지정합니다. AWS에서 제공하는 서비스와 해당 서비스에서 지원하는 작업을 포함합니다.
  • Resource: 작업을 수행할 수 있는 리소스를 지정합니다. ARN(Amazon Resource Name) 형식으로 지정합니다.
  • Condition: 정책이 적용되는 조건을 지정합니다. 예를 들어 특정 IP 주소에서만 액세스를 허용하도록 설정할 수 있습니다.

각 필드에서 사용되는 키 값은 다음과 같습니다.

  • Effect: "Allow" 또는 "Deny"
  • Action: AWS에서 제공하는 서비스 및 해당 서비스에서 지원하는 작업을 나타내는 문자열입니다. 예를 들어, "s3:PutObject"는 Amazon S3에서 객체를 업로드하는 작업을 나타냅니다.
  • Resource: ARN 형식으로 표시된 리소스 식별자입니다. 예를 들어, "arn:aws:s3:::mybucket/*"는 "mybucket"이라는 이름의 Amazon S3 버킷의 모든 객체를 나타냅니다.
  • Condition: IAM 정책이 적용되는 조건을 지정하는 데 사용됩니다. 예를 들어, "Condition": {"IpAddress": {"aws:SourceIp": "192.0.2.0/24"}}는 특정 IP 범위에서만 액세스를 허용하도록 지정합니다
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::mybucket/*"
            ]
        }
    ]
}

 

MFA

사용 이유

AWS는 해킹 방지를 목적으로 MFA를 도입했습니다. MFA는 사용자의 물리적 디바이스에서 생성되는 비밀번호이기에  해킹의 위험이 줄어듭니다.

IAM ROLE

사용 이유

IAM Role은 AWS 계정에서 리소스에 대한 액세스를 설정할 수 있는 방법입니다. 이는 사용자나 그룹에 대한 권한을 부여할 때보다 보안성이 높은 방법으로 권한을 부여할 수 있습니다. IAM Role은 AWS 리소스에 대한 권한을 부여하거나 API 요청을 수행할 때 액세스 권한을 부여하는 데 사용됩니다.

즉 IAM Role은 IAM 서비스를 사용하여 AWS 리소스에 대한 액세스 권한을 안전하게 제어하는 데 도움이 됩니다.

 

ROLE을 이용한 AWS서비스 제어

사용 예시

예를 들어, EC2 인스턴스에서 RDS 데이터베이스에 액세스해야 하는 경우, EC2 인스턴스에 IAM Role을 연결하여 데이터베이스에 대한 액세스 권한을 부여할 수 있습니다. 이렇게 함으로써 EC2 인스턴스에서 데이터베이스 자격 증명을 사용하지 않고도 데이터베이스에 액세스할 수 있습니다.

 

 

IAM의 모범 사례

  1. 최소 권한 원칙: 사용자 또는 역할에 대한 최소한의 권한만 부여하여 보안성을 높입니다. 필요한 작업에만 액세스할 수 있도록 구성하고, 그 이상의 권한은 제한합니다.
  2. 사용자와 역할 분리: 각 사용자와 역할에 대한 엄격한 분리를 유지합니다. 사용자와 역할은 필요에 따라 다른 권한을 가집니다.
  3. 주기적인 권한 검토: 일정한 간격으로 사용자와 역할의 권한을 검토하고 필요하지 않은 권한을 제거합니다. 이를 통해 권한 부여의 불필요한 축적을 막을 수 있습니다.
  4. 보안 토큰 및 암호화 키 분리: IAM 사용자와 역할은 보안 토큰과 암호화 키를 분리하여 안전한 관리를 보장합니다.
  5. IAM 액세스 키 로테이션: IAM 액세스 키는 일정 기간마다 로테이션(갱신)하여 보안성을 유지합니다.
  6. MFA(Multi-Factor Authentication) 활성화: MFA를 활성화하여 AWS 계정에 대한 보안을 강화합니다.
  7. CloudTrail 로깅 사용: CloudTrail을 사용하여 모든 API 호출 로그를 캡처하고 저장하면 보안 이벤트를 검출할 수 있습니다.
  8. IAM 정책 버전 관리: IAM 정책에 대한 변경을 추적하고 관리합니다. 버전 관리를 통해 필요한 경우 이전 버전으로 되돌릴 수 있습니다.
  9. IAM 역할 분리: IAM 역할은 다른 AWS 계정에 대한 액세스를 제공할 수 있습니다. 이 경우, 역할 분리를 사용하여 외부 계정에 대한 액세스를 제한합니다.
반응형

'AWS' 카테고리의 다른 글

AWS - Elastic Load Balancer  (0) 2023.04.02
AWS - 고가용성과 확장성이란?  (0) 2023.03.29
AWS - EBS & EFS  (0) 2023.03.27
AWS - EC2  (0) 2023.03.26
AWS - Region, AZ (Availability Zone)의 개요  (0) 2023.03.25