반응형

보안 정책 범주

정책은 자격 증명이나 리소스에 연결되어 해당 권한을 정의합니다. AWS는 사용자와 같은 보안 주체가 요청할 때 이런 정책을 평가합니다.

 

IAM 권한 경계 및 AWS Organizations 서비스 제어 정책(SCP)을 활용하여 계정에서 수행하는 작업에 대한 최대 권한을 설정할 수 있습니다. IAM 자격 증명 기반 정책과 리소스 기반 정책은 계정에서 수행하는 작업을 허용하거나 거부할 권한을 부여합니다.

 

AWS에서 사용 가능한 정책은 다음과 같으며 사용 빈도 순으로 나열되어 있습니다.

  1. 자격 증명 기반 정책
    IAM 자격 증명에 관리형 정책과 인라인 정책을 연결합니다. 이러한 자격 증명에는 사용자, 사용자가 속한 그룹 및 역할이 포함됩니다.

  2. 리소스 기반 정책
    리소스에 인라인 정책을 연결합니다. 리소스 기반 정책의 가장 일반적인 예는 S3 버킷 정책 및  IAM 역할 신뢰 정책입니다.

  3. AWS Organizations SCP
    Organizations SCP를 사용해 조직 또는 조직 단위(OU)의 계정 구성원에 대한 최대 권한을 정의합니다.

  4. IAM 권한 경계
    AWS에서는 IAM 엔터티의 권한 경계를 지원합니다. IAM 권한 경계를 사용하여 IAM 엔터티가 수행할 수 있는 최대 권한을 설정합니다.

자격 증명 기반 정책

자격 증명 기반 정책은 다음 항목을 제어하는 JSON 권한 정책 문서입니다.

  • IAM 자격 증명(사용자, 사용자 그룹 및 역할)dl tngodgkf tn dLTsms wkrdjq
  • IAM 자격 증명이 이러한 작업을 수행할 수 있는 리소스
  • IAM 자격 증명이 이러한 작업을 수행할 수 있는 조건

자격 증명 기반 정책 유형

  • 관리형 정책
    AWS 계정의 여러 사용자, 그룹 및 역할에 연결할 수 있는 독립 실행형 자격 증명 기반 정책으로, 두 가지 유형의 관리형 정책이 있습니다.
    1. AWS 관리형 정책
      AWS에서 생성하고 관리하는 관리형 정책입니다. 특정 서비스 액세스 또는 작업 기능에 대한 권한을 제공하도록 구축되었습니다.
    2. 고객 관리형 정책
      고객이 AWs 계정에서 생성하고 관리하는 관리형 정책입니다. 고객 관리형 정책은 AWs 관리형 정책보다 더 정밀하게 정책을 제어합니다.
  • 인라인 정책
    단일 사용자, 그룹 또는 역할에 직접 추가하는 정책입니다. 인라인 정책은 정책과 엔터티 간에 엄격한 일대일 관계를 유지합니다. 즉, 자격 증명을 삭제하면 인라인도 삭제됩니다.

    인라인 정책은 사용자가 생성하여 IAM 그룹, 사용자 또는 역할에 직접 포함하는 정책입니다. 인라인 정책은 다른 자격 증명에 재사용하거나 해당 정책이 존재하는 자격 증명 외부에서 관리할 수 없습니다.

고객 관리형 정책 자세한 내용(IAM 보안 모범 사례)

 

자격 증명 기반 정책 예제

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AttachVolume",
                "ec2:DetachVolume"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:volume/*",
                "arn:aws:ec2:*:*:instance/*"
            ],
            "Condition": {
                "ArnEquals": {"ec2:SourceInstanceARN": "arn:aws:ec2:*:*:instance/instance-id"}
            }
        }
    ]
}
  • Version
    정책을 처리하는 데 사용할 언어 구문 규칙을 지정합니다. 사용 가능한 모든 정책 기능을 사용하려면 정책 버전에 위와 같이 2012-10-17 값을 삽입해줍니다.
  • Effect
    Allow 또는 Deny를 사용해 정책이 액세스를 허용할지 거부할지를 지정해줄 수 있습니다.
  • Action(또는 NotAction)
    정책이 허용하거나 거부하는 작업 목록을 포함합니다.
  • Resource(또는 NotResource)
    작업이 적용되는 리소스 목록을 지정해야 합니다.
  • Condition(또는 NotCondition)
    정책이 권한을 부여하는 상황을 지정합니다.

예를들어 IAM 사용자에게 예제 정책 스테이트먼트를 연결할 수 있습니다. 그러면 조컨 충족 시 해당 사용자가 계정에서 EC2 인스턴스를 중지 및 시작할 수 있습니다. 여기서 IAM 사용자가 제어할 수 있는 EC2 인스턴스에는 키가 Owner이며 값은 IAM 사용자 이름과 같은 태그가 있어야 합니다.

 

  • 와일드 카드(*)
    와일드카드는 여러 리소스나 작업에 정책 요소를 적용하는 데 사용됩니다. 이 정책은 모든 계정 번호의 리소스, 그리고 모든 리소스 ID의 리전에 적용됩니다. 그러므로 AWs 계정 ID를 추가하여 정책을 다시 작성하지 않고도 여러 계정에 정책을 재사용할 수 있습니다.

 

리소스 기반 정책

리소스 기반 정책은 S3 버킷 등의 리소스에 연결되는 JSON 정책 문서입니다. 이러한 정책은 해당 리소스에서 특정 작업을 수행할 수 있는 권한을 보안 주체에 부여하고 이러한 권한이 적용되는 조건읠 정의합니다. 리소스 기반 정책은 인라인 정책이며, 관리형 리소스 기반 정책은 없습니다.

 

이러한 정책들은 기존 AWS 정책을 사용할 수도 있고, 자신에게 맞게 자체적으로 생성할 수도 있습니다.

 

리소스 기반 정책 예시

{
   "Version":"2012-10-17",
   "Statement":[
     {
       "Sid":"PolicyForAllowUploadWithACL",
       "Effect":"Allow",
       "Principal":{"AWS":"111122223333"},
       "Action":"s3:PutObject",
       "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
       "Condition": {
         "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"}
       }
     }
   ]
}

리소스 기반 정책은 S3 버킷이나 AWS Lambda 함수 등의 단일 리소스에 연결됩니다. 리소스 기반 정책 사용 시에는 리소스에 액세스할 수 있는 사용자와 해당 사용자가 리소스에 대해 수행할 수 있는 작업을 선택합니다.

 

리소스 기반 정책을 생성하는 경우에는 Principal를 정의해줘야 합니다. 즉, 액세스를 허용하거나 거부할 계정, 사용자, 역할 또는 페더레이션 사용자를 지정하는 것입니다. 이전에 사용자나 역할에 연결할 IAM 권한 정책을 생성했을 때에는 이 요소를 포함하지 않았었습니다. 그 이유는 해당 사용자나 역할이 암시적으로 보안 주체로 적용되기 때문입니다.

 

또 다른 점은 리소스 기반 정책에서 Resource 요소는 선택 사항입니다. 이 요소를 포함하지 않으면 작업이 적용되는 리소스가 정책이 연결된 리소스입니다.

 

위 예제에서 Principal은 AWS 계정의 고유 번호입니다. 여기서 리소스는 DOC-EXAMPLE-BUCKET에 있는 모든 객체를 지정해 주었습니다. 이 버킷 정책을 적용하면 특정 AWS 계정이 버킷 폴더에 객체를 업로드할 수 있습니다.

 

명시적 허용과 명시적 거부

IAM 정책에는 명시적 허용문이나 명시적 거부문 중 하나가 포함되거나 두 문장이 모두 포함됩니다.

 

  1. 명시적 허용 - 명시적 허용은 IAM 사용자, 그룹, 역할이 리소스 집합을 대상으로 나열된 작업을 수행할 권한을 부여하는 것입니다.

  2. 명시적 거부 - 명시적 거부는 IAM 사용자, 그룹, 역할이 리소스 집합을 대상으로 나열된 작업 수행을 시도하면 해당 작업을 중지합니다.

IAM 정책 평가 로직

계정용 IAM 정책을 작성할 때는 AWs 평가 로직을 파악하는 것이 중요합니다. 그래야 사용자와 앱에 필요한 액세스 권한만 제공할 수 있습니다.(최소 권한 원칙)

 

AWS는 요청 컨텍스트에 해당되는 모든 정책을 평가합니다. 단일 계정 내에서 정책에 사용 가능한 AWS 평가 관련 요약 내용은 다음과 같습니다.

  • 기본적으로 모든 요청은 암시적으로 거부됩니다. 단, 모든 액세스를 보유한 AWS 계정 루트 사용자는 예외입니다.
  • 자격 증명 기반 정책이나 리소스 기반 정책의 명시적 허용은 이러한 기본값을 재정의 합니다.
  • 모든 정책의 명시적 거부는 모든 허용을 재정의합니다. 따라서 안전 조치로 활용하기 좋습니다.
"모든 정책의 명시적 거부는 모든 허용을 재정의합니다"라는 문장은 다음과 같은 예시로 설명할 수 있습니다. 사용자에게 리소스에 대한 액세스를 허용하는 정책이 하나 있고, 사용자에게 리소스에 대한 액세스를 거부하는 정책이 하나 있으면 사용자는 리소스에 액세스할 수 없습니다. 명시적인 거부는 모든 허용을 재정의하기 때문입니다. 즉, 명시적 거부가 명시적 허용보다 우선순위가 높다는 뜻입니다.

 

자격 증명 기반 정책 및 리소스 기반 정책의 자세한 내용

반응형

'자격증 > AWS SAA' 카테고리의 다른 글

[AWS SAA] 7. IP와 CIDR  (0) 2023.07.02
[AWS SAA] 6. 보안 정책 Part.2  (0) 2023.07.02
[AWS SAA] 4. 계정 보안 Part.02  (0) 2023.07.01
[AWS SAA] 3. 계정 보안 Part.01  (0) 2023.07.01
[AWS SAA] 2. AWS Architect의 업무와 핵심 사항  (0) 2023.06.30