AWS 노트

AWS IAM

Jonchann 2020. 4. 3. 16:04

AWS 설명서: IAM
AWS 설명서: IAM으로 작업하는 AWS 서비스

AWS IAM(Identity and Access Management): AWS 리소스에 액세스하는 권한 관리 서비스

  • 로그인으로 인증되고 권한이 부여된 대상을 제어
    • 권한: 자격 증명
  • 추가 비용 발생하지 않는 서비스
    • IAM 사용자 또는 AWS STS(Security Token Service) 임시 보안 자격 증명으로 다른 AWS 서비스에 액세스 하는 경우에는 요금 부과
  • IAM 사용자를 처음 생성할 때에만 '루트 사용자(AWS 계정을 처음 생성할 당시 모든 액세스 권한이 부여된 ID)'를 사용해야 함
  • 암호나 Access Key를 공유하지 않고 다른 사용자에게 권한 부여 가능
    • 여러 사람에게 서로 다른 다양한 권한 부여 가능
  • EC2 인스턴스에서 실행되는 어플리케이션에 다른 AWS 리소스에 접근할 수 있는 권한 제공
    • 여기서 말하는 리소스 e.g.) S3, DynamoDB 테이블 등
  • 계정과 개별 사용자에게 2팩터 인증 추가 가능(MFA; Multi Factor Accrediation)
  • 다른 곳에 암호를 갖고 있는 사용자에게 AWS 계정에 대한 임시 접근 권한 부여 가능(자격 증명 연동)
  • Payment Card Industry(PCI) Data Security Standard(DSS) 준수 검증
    • 전자 상거래 웹사이트 운영자, 서비스 공급자에 대한 신용 카드 데이터 처리, 저장, 전송 지원
  • 전 세계 Amazon 데이터 센터 내 여러 서버로 데이터 복제해 고가용성 구현
    • 사용자, 그룹, 역할, 정책 등의 생성 / 업데이트 요청은 IAM에 복제되어야 하며 시간이 걸리지만 요청이 성공하면 변경 실행, 결과는 저장 됨
    • 위와 같은 IAM 변경 사항을 어플리케이션의 중요한 코드에 포함시키지 말고 자주 실행하지 않는 별도 루틴에서 변경해야 함

IAM에 접근하는 법

AWS 서비스를 위한 IAM

서비스

  • 서비스에 대한 권한 부여, 접근에 관한 AWS 문서 열람 가능

작업

  • 각 AWS 서비스는 IAM 정책에서 사용할 수 있는 작업(Action), 리소스, 조건 컨텍스트 키를 정의할 수 있음
    • 작업(Actions): AWS API Reference: Actions
      • 특정 작업에 대한 허용 여부는 Action 요소(Element)로 지정
      • 명령문에는 반드시 Action 또는 NotAction을 적어줘야 함
      • "[Action/NotAction]": "[service_name]:[action_name]"
        • e.g. "Action": "ec2:StartInstances", "Action": "iam:ChangePassword"
    • 정책(Policies)
      • 권한(자격 증명)이나 리소스와 연결될 때 이를 정의하는 AWS의 객체
      • 정책 생성 후 IAM 자격 증명(사용자, 사용자 그룹 / 역할) / AWS 리소스에 연결해 접근(access)을 관리
      • IAM의 사용자 / 역할이 리퀘스트를 보낼 때 AWS가 정책에 대한 평가를 내림
        • 정책 허가가 내려짐
      • 모든 정책은 JSON 형식으로 보관
      • 6가지 유형 지원
        • 자격 증명(identity) 기반 정책: 관리 정책, 그 때마다 규정하는 정책을 IAM 자격 증명에 연결해 권한 부여
        • 리소스 기반 정책: 그 때마다 규정하는 정책을 리소스에 연결해 정책에서 허가한 주체에게 권한 부여
        • 허용(권한) 범위: 관리형 정책을 IAM 사용자 / 역할에 대한 기준으로 사용하며 자격 증명 기반 정책을 통해 사용자 / 역할에게 부여할 수 있는 최대 권한을 정의만 함(리소스 기반 정책에 대해서는 하지 않음)
        • 조직 SCP(Service Control Policy): 조직 또는 조직 단위(OU) 계정 멤버에 대한 최대 권한을 정의하고 자격 증명 기반 정책, 리소스 기반 정책을 통해 계정 내 사용자 / 역할에게 부여 가능한 권한은 제한하되 부여하지는 않음
        • ACL(Access Control List): ACL을 기준으로 ACL이 연결된 리소스에 접근 가능한 다른 계정의 보안 주체를 제어(지정된 보안 주체에 권한을 부여하는 교차 계정 권한 정책)하고 JSON 형식으로 정책을 보관하지 않는 유일한 정책.
        • 세션 정책: CLI 또는 API를 사용해 역할 / 연합된 사용자를 위임할 때 고급 세션 정책을 전달하는데 세션에 부여하는 권한을 제한함(생성된 세션에 대한 권한을 제한하지 않지만 부여하지도 않음)
      • IAM 사용자를 생성할 때 콘솔을 통한 접근 혹은 프로그래밍을 통한 접근에 대한 권한을 부여 가능
        • 콘솔을 통한 접근 허가: 로그인 가능
        • 프로그래밍을 통한 접근 허가: CLI / API 사용 가능
    • 작업 테이블: IAM 정책에 설명된 작업(Action) 요소(element)에서 사용할 수 있는 모든 작업(Action)을 나열한 것
      • 서비스에서 정의된 모든 API 작업을 IAM 정책의 Action으로 사용 가능한 것은 아님
      • API 작업에 직접 해당하지 않는 일부 작업 정의 가능
      • 4가지 열
        • 액세스 레벨: 작업이 분류되는 방법(나열, 읽기, 쓰기, 권한 관리, 태그 지정)
        • 리소스 유형: 해당 작업(action)이 리소스 차원의 권한을 갖고 있는지에 대한 여부
          • 만약 해당 열이 비어있다면 리소스 차원의 권한을 지원하지 않는다는 것이므로 정책에서 모든 리소스(*: 필수 리소스)라 명시해 주어야 함
          • 리소스 유형이 포함되어 있다면 정책 내의 리소스(Resource) 요소에서 리소스 ARN(Amazon Resource Name) 지정 가능
          • 명령문 한 줄에는 서로 호환되는 작업과 리소스가 있어야 함
            • 만약 그렇지 않다면 리퀘스트는 실패하고 명령문의 Effect가 적용되지 않음
          • 다수의 리소스 유형을 지원하기도 하나 리소스 유형이 *가 아닌 경우에는 한가지만 선택 가능
        • 조건 키: 정책 내 Condition 요소가 지정할 수 있는 키
          • 키가 특정 리소스 유형과 동일한 행에 있는지 주의
          • 모든 작업 혹은 과련 없는 상황에서도 사용할 수 있는 전역 조건 키는 불포함
        • 종속 작업: 작업(Action)을 성공적으로 호출하기 위해 그 자체에 대한 권한 외에도 보유해야 하는 추가 권한을 포함하며 두개 이상의 리소스에 접근하는 경우 필요할 수 있음

'AWS 노트' 카테고리의 다른 글

AWS Lambda Python 실행기 (2)  (0) 2020.04.06
AWS Lambda Python 실행기 (1)  (0) 2020.04.03
AWS Lambda  (0) 2020.04.03
AWS EC2, CLI  (0) 2020.04.03
AWS 인스턴스, AMI  (0) 2020.04.03