Amazon ECS IAM 모범 사례

Amazon ECS IAM 모범 사례

AWS Identity and Access Management(IAM)를 사용하면 인증·권한 부여 목적의 규칙 기반 정책을 통해 AWS 서비스와 리소스에 대한 접근을 관리·제어할 수 있어요. 구체적으로 이 서비스를 통해 사용자, 그룹, 역할에 적용되는 정책을 사용해 AWS 리소스에 대한 접근을 제어합니다.

출처: 문서

본문

AWS Identity and Access Management(IAM)를 사용하면 인증·권한 부여 목적의 규칙 기반 정책을 통해 AWS 서비스와 리소스에 대한 접근을 관리·제어할 수 있습니다. 이 서비스로 사용자·그룹·역할에 적용되는 정책을 사용해 AWS 리소스에 대한 접근을 제어해요. 이 셋 중 사용자는 리소스에 접근할 수 있는 계정입니다. 그리고 IAM 역할은 인증된 자격 증명이 맡을 수 있는(assume) 권한 집합으로, IAM 외부의 특정 자격 증명과 연결되지 않습니다. 자세한 내용은 "Amazon ECS overview of access management: Permissions and policies"를 참고하세요.

최소 권한(least privileged access) 정책 따르기

사용자가 맡은 작업을 수행하도록 범위가 좁혀진 정책을 만드세요. 예를 들어 개발자가 주기적으로 태스크를 중지해야 한다면, 그 특정 액션만 허용하는 정책을 만듭니다. 다음 예제는 특정 ARN(Amazon Resource Name)을 가진 클러스터의 특정 task_family에 속한 태스크만 사용자가 중지할 수 있게 허용합니다. 조건에서 ARN을 참조하는 것도 리소스 수준 권한(resource-level permissions)을 사용하는 예시입니다. 리소스 수준 권한을 사용하면 액션이 적용될 리소스를 지정할 수 있어요. 자세한 내용은 "Policy resources for Amazon ECS"를 참고하세요.

클러스터 리소스를 관리 경계로 삼기

너무 좁게 범위가 지정된 정책은 역할의 확산을 초래하고 관리 오버헤드를 늘릴 수 있습니다. 특정 태스크나 서비스에만 범위가 지정된 역할을 만드는 대신, 클러스터에 범위가 지정된 역할을 만들고 클러스터를 기본 관리 경계로 사용하세요.

최종 사용자를 API에서 격리하는 자동화 파이프라인 구축

애플리케이션을 자동으로 패키징해 Amazon ECS 클러스터에 배포하는 파이프라인을 만들어 사용자가 사용할 수 있는 액션을 제한할 수 있습니다. 이는 태스크 생성·업데이트·삭제 작업을 파이프라인에 위임하는 효과가 있어요. 자세한 내용은 AWS CodePipeline User Guide의 "Tutorial: Amazon ECS standard deployment with CodePipeline"을 참고하세요.

보안 계층 추가를 위해 정책 조건 사용하기

추가 보안 계층이 필요할 때 정책에 조건을 추가하세요. 권한 있는 작업을 수행하거나 특정 리소스에 대해 수행할 수 있는 액션 집합을 제한해야 할 때 유용합니다. 다음 예제 정책은 클러스터 삭제 시 다중 인증(multi-factor authorization)을 요구합니다.

{
  "Version":"2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:DeleteCluster"
      ],
      "Condition": {
        "Bool": {
          "aws:MultiFactorAuthPresent": "true"
        }
      },
    "Resource": ["*"]
    }
  ]
}

서비스에 적용된 태그는 그 서비스의 일부인 모든 태스크에 전파됩니다. 따라서 특정 태그를 가진 Amazon ECS 리소스에 범위가 지정된 역할을 만들 수 있어요. 다음 정책에서 IAM 주체(principal)는 태그 키가 Department이고 태그 값이 Accounting인 모든 태스크를 시작·중지합니다.

{
    "Version":"2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:StartTask",
                "ecs:StopTask",
                "ecs:RunTask"
            ],
            "Resource": "arn:aws:ecs:us-east-1:123456789012:cluster/my-cluster",
            "Condition": {
                "StringEquals": {"ecs:ResourceTag/Department": "Accounting"}
            }
        }
    ]
}

API 접근을 주기적으로 감사하기

사용자는 역할을 바꿀 수 있습니다. 역할을 바꾼 후에는 이전에 부여된 권한이 더 이상 적용되지 않을 수 있어요. 누가 Amazon ECS API에 접근하고 그 접근이 여전히 필요한지 감사하세요. 사용자가 조직을 떠날 때 접근을 자동으로 철회하는 사용자 수명주기 관리 솔루션과 IAM을 통합하는 것을 고려하세요. 자세한 내용은 AWS Identity and Access Management User Guide의 "AWS security audit guidelines"를 참고하세요.

더 알아보기 (Learn more)

  • Amazon ECS IAM 관련 자세한 내용은 AWS 공식 문서를 참고해 주세요.