

# 데이터 액세스 제어
<a name="data-access-controls"></a>

GDPR 제25조는 컨트롤러가 "기본적으로 각 특정 처리 목적에 필요한 개인 데이터만 처리하도록 적절한 기술적 및 조직적 조치를 구현해야 한다"고 명시합니다. 다음 AWS 액세스 제어 메커니즘은 권한이 있는 관리자, 사용자 및 애플리케이션만 AWS 리소스와 고객 데이터에 대한 액세스 권한을 얻도록 허용하여 고객이 이러한 요구 사항을 준수하도록 지원할 수 있습니다. 

# AWS Identity and Access Management
<a name="aws-identity-and-access-management"></a>

AWS 계정을 생성하면 AWS 계정에 대한 *루트* 사용자 계정이 자동으로 생성됩니다. 이 사용자 계정은 AWS 계정에 있는 모든 AWS 서비스와 리소스에 대한 완전한 액세스 권한을 가지고 있습니다. 일상적인 작업에 이 계정을 사용하는 대신, 처음에 추가 역할 및 사용자 계정을 만들 때와 이 계정이 필요한 관리 활동에만 이 계정을 사용해야 합니다. AWS에서는 처음부터 최소 권한의 원칙을 적용하는 것이 좋습니다. 이렇게 하려면 작업마다 다른 사용자 계정과 역할을 정의하고 각 작업을 완료하는 데 필요한 최소 권한 집합을 지정합니다. 이 접근 방식은 GDPR에 도입된 핵심 개념인 설계를 통한 데이터 보호를 조정하기 위한 메커니즘입니다. [AWS Identity and Access Management](https://aws.amazon.com/iam/)(IAM)는 AWS 리소스에 대한 액세스를 안전하게 제어하기 위해 사용할 수 있는 웹 서비스입니다. 

사용자와 역할은 특정 권한이 있는 IAM 자격 증명을 정의합니다. 권한 있는 사용자는 IAM 역할을 수임하여 특정 작업을 수행할 수 있습니다. 역할을 수임하면 임시 자격 증명이 생성됩니다. 예를 들어, IAM 역할을 사용하여 Amazon S3 버킷 및 [Amazon Relational Database Service](https://aws.amazon.com/rds/)(Amazon RDS) 또는 [Amazon DynamoDB](https://aws.amazon.com/dynamodb) 데이터베이스와 같은 다른 AWS 리소스에 액세스하는 데 필요한 임시 자격 증명과 함께 [Amazon Elastic Compute Cloud](https://aws.amazon.com/ec2)(Amazon EC2)에서 실행되는 애플리케이션을 안전하게 제공할 수 있습니다. 마찬가지로 [실행 역할](https://docs.aws.amazon.com/lambda/latest/dg/lambda-permissions.html)은 로그 스트리밍을 위한 [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 또는 [Amazon Simple Queue Service](https://aws.amazon.com/sqs/)(Amazon SQS) 대기열의 메시지 읽기와 같은 다른 AWS 서비스 및 리소스에 액세스하는 데 필요한 권한과 함께 [AWS Lambda](https://aws.amazon.com/lambda/) 함수를 제공합니다. 역할을 생성할 때 정책을 역할에 추가하여 권한 부여를 정의합니다.

고객이 리소스 정책을 모니터링하고 의도하지 않은 퍼블릭 또는 교차 계정 액세스 권한이 있는 리소스를 식별할 수 있도록 [IAM Access Analyzer](https://aws.amazon.com/iam)를 활성화하여 AWS 계정 외부에서 액세스할 수 있는 리소스를 식별하는 포괄적인 검색 결과를 생성할 수 있습니다. IAM Access Analyzer는 정책에서 허용하는 가능한 액세스 경로를 확인하기 위해 산술 논리 및 추론을 사용하여 리소스 정책을 평가합니다. IAM Access Analyzer는 새 정책 또는 업데이트된 정책을 지속적으로 모니터링하며, IAM 역할에 대한 정책뿐 아니라 Amazon S3 버킷, [AWS Key Management Service](https://aws.amazon.com/kms/)(AWS KMS) 키, Amazon SQS 대기열, Lambda 함수와 같은 서비스 리소스에 대한 정책을 사용하여 부여된 권한을 분석합니다.

[Access Analyzer for S3](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/access-analyzer.html)은 인터넷에 있는 모든 사용자 또는 조직 외부의 AWS 계정을 포함한 다른 AWS 계정에 대한 액세스를 허용하도록 버킷이 구성된 경우 사용자에게 알립니다. Amazon S3용 Access Analyzer에서 위험 버킷을 검토할 때 클릭 한 번으로 버킷에 대한 모든 퍼블릭 액세스를 차단할 수 있습니다. AWS에서는 특정 사용 사례를 지원하기 위해 퍼블릭 액세스가 필요한 경우를 제외하고 버킷에 대한 모든 액세스를 차단하는 것이 좋습니다. 모든 퍼블릭 액세스를 차단하기 전에 애플리케이션이 퍼블릭 액세스 없이 계속 올바르게 작동하는지 확인하세요. 자세한 내용은 [Amazon S3을 사용하여 퍼블릭 액세스 차단](https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)을 참조하세요.

또한 IAM은 마지막으로 액세스한 정보를 제공하여 사용되지 않는 권한을 식별할 수 있도록 지원하므로 연결된 보안 주체에서 해당 권한을 제거할 수 있습니다. 마지막으로 액세스한 정보를 사용하면 정책을 구체화하고 필요한 서비스와 작업에만 액세스를 허용할 수 있습니다. 그러면 [최소 권한 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)를 더 효과적으로 준수하고 적용할 수 있습니다. IAM에 또는 전체 [AWS Organizations](https://aws.amazon.com/organizations/) 환경에 걸쳐 존재하는 엔터티 또는 정책에 대해 마지막으로 액세스한 정보를 볼 수 있습니다.

# AWS STS를 통한 임시 액세스 토큰
<a name="temporary-access-tokens-through-aws-sts"></a>

 [AWS Security Token Service](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)(AWS STS)를 사용하면 AWS 리소스에 대한 액세스를 부여하는 임시 보안 자격 증명을 생성하여 신뢰할 수 있는 사용자에게 제공할 수 있습니다. 임시 보안 자격 증명은 IAM 사용자에게 제공하는 장기 액세스 키 자격 증명과 거의 동일하게 작동하지만, 다음과 같은 차이점이 있습니다. 
+  임시 보안 자격 증명은 단기 사용을 위한 것입니다. 유효 시간을 15분에서 최대 12시간까지 구성할 수 있습니다. 임시 자격 증명이 만료된 후 AWS는 해당 자격 증명을 인식하지 못하거나 해당 자격 증명으로 수행하는 API 요청으로부터 어떠한 종류의 액세스도 허용하지 않습니다.
+  임시 보안 자격 증명은 사용자 계정과 함께 저장되지 않습니다. 그 대신 임시 보안 자격 증명은 요청 시 동적으로 생성되어 사용자에게 제공됩니다. 임시 보안 자격 증명이 만료될 때(또는 만료되기 전에) 사용자는 새 자격 증명을 요청할 수 있습니다(해당 사용자에게 이렇게 할 권한이 있는 경우). 

 이러한 차이점이 있으므로 임시 자격 증명을 사용할 때 다음과 같은 이점이 있습니다. 
+  애플리케이션에 장기 AWS 보안 자격 증명을 배포하거나 포함할 필요가 없습니다. 
+  임시 자격 증명은 역할 및 ID 페더레이션의 기반입니다. 사용자의 임시 AWS 자격 증명을 정의하여 AWS 리소스에 대한 액세스 권한을 사용자에게 제공할 수 있습니다. 
+  임시 보안 자격 증명에는 사용자 지정할 수 있는 제한적인 수명이 있습니다. 따라서 자격 증명을 교체하거나 더 이상 필요하지 않을 때 명시적으로 취소할 필요가 없습니다. 임시 보안 자격 증명이 만료된 후에는 해당 자격 증명을 다시 사용할 수 없습니다. 자격 증명이 유효한 최대 시간을 지정할 수 있습니다. 

# 멀티 팩터 인증
<a name="multi-factor-authentication"></a>

보안을 강화하기 위해 AWS 계정과 IAM 사용자에 대해 2팩터 인증을 추가할 수 있습니다. 멀티 팩터 인증(MFA)을 활성화하면 [AWS 관리 콘솔](https://aws.amazon.com/console/)에 로그인할 때 사용자 이름과 암호(첫 번째 요소)뿐 아니라 AWS MFA 디바이스의 인증 응답(두 번째 요소)을 입력하라는 메시지가 표시됩니다. AWS 계정 및 해당 계정에서 생성한 개별 IAM 사용자에 대해 MFA를 활성화할 수 있습니다. 또한 MFA를 사용하여 AWS 서비스 API에 대한 액세스를 제어할 수 있습니다.

 예를 들어 Amazon EC2에서 모든 AWS API 작업에 대한 전체 액세스를 허용하지만, 사용자가 MFA를 통해 인증되지 않은 경우 `StopInstances` 및 `TerminateInstances`와 같은 특정 API 작업에 대한 액세스를 명시적으로 거부하는 정책을 정의할 수 있습니다. 

```
        {
         “Version”: “2012-10-17”,
         “Statement”: [
             {
                “Sid”: “AllowAllActionsForEC2”,
                “Effect”: “Allow”,
                “Action”: “ec2:*”,
                “Resource”: “*”
             },
            {
                “Sid”: “DenyStopAndTerminateWhenMFAIsNotPResent”,
                “Effect”: “Deny”,
                “Action”: [
                    “ec2:StopInstances”,
                    “ec2:TerminateInstances”
               ],
               “Resource”: “*”,
               “Conditions”: {
                   “BoolIfExists”: {“aws:MultiFactorAuthPresent”:false}
                }
            }
       }
}
```

Amazon S3 버킷에 추가 보안 계층을 추가하려면 [MFA Delete](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html)를 구성할 수 있습니다. 이렇게 하면 버킷의 버전 관리 상태를 변경하고 객체 버전을 영구적으로 삭제하려는 경우 추가 인증이 필요합니다. MFA Delete는 보안 자격 증명이 손상된 경우 보안을 강화합니다.

MFA Delete를 사용하려면 하드웨어 또는 가상 MFA 디바이스를 사용하여 인증 코드를 생성할 수 있습니다. 지원되는 하드웨어 또는 가상 MFA 디바이스 목록은 [멀티 팩터 인증 페이지](https://aws.amazon.com/iam/features/mfa/)를 참조하세요.

# AWS 리소스에 대한 액세스
<a name="access-to-aws-objects-resources"></a>

AWS 리소스에 대한 세분화된 액세스 권한을 구현하려면 리소스에 따라 각 사용자에게 서로 다른 수준의 권한을 부여할 수 있습니다. 예를 들어 일부 사용자만 Amazon EC2, Amazon S3, DynamoDB, [Amazon Redshift](https://aws.amazon.com/redshift/) 및 기타 AWS 서비스에 완전히 액세스할 수 있도록 허용할 수 있습니다. 

다른 사용자의 경우 일부 Amazon S3 버킷에 대한 읽기 전용 액세스만 허용하거나, 일부 Amazon EC2 인스턴스만 관리하거나 결제 정보에만 액세스할 수 있는 권한을 허용할 수 있습니다. 

 다음 정책은 특정 Amazon S3 버킷에 대한 모든 작업을 허용하고 Amazon S3가 아닌 모든 AWS 서비스에 대한 액세스를 명시적으로 거부하기 위해 사용할 수 있는 방법 중 하나의 예입니다. 

```
      {
         “Version”: “2012-10-17”,
         “Statement”: [
             {
                “Effect”: “Allow”,
                “Action”: “s3:*”,
                “Resource”: [
                     “arn:aws:s3:::bucket-name”,
                     “arn:aws:s3:::bucket-name/*”
                 ],
              },
              {
                “Effect”: “Deny”,
                “NotAction”: “s3:*”,
                “NotResource”: [
                     “arn:aws:s3:::bucket-name”,
                     “arn:aws:s3:::bucket-name/*”
                 ] 
               }
            ]
}
```

 사용자 계정이나 역할에 정책을 연결할 수 있습니다. IAM 정책의 다른 예는 [IAM 자격 증명 기반 정책 예](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html)를 참조하세요. 

# 리전 서비스 액세스의 경계 정의
<a name="defining-boundaries-for-regional-services-access"></a>

고객은 자신의 콘텐츠에 대한 소유권을 유지하고 콘텐츠를 처리, 저장 및 호스트할 수 있는 AWS 서비스를 선택합니다. AWS는 사용자의 동의 없이 어떤 목적으로도 사용자의 콘텐츠에 액세스하거나 사용자의 콘텐츠를 사용하지 않습니다. 공동 책임 모델을 기반으로 콘텐츠가 저장되는 AWS 리전을 선택하면 특정 지리적 요구 사항에 따라 선택한 위치에 AWS 서비스를 배포할 수 있습니다. 예를 들어 콘텐츠가 유럽에만 위치하도록 하려면 AWS 서비스를 유럽 AWS 리전 중 하나에만 배포하도록 선택할 수 있습니다. 

IAM 정책은 특정 리전의 서비스에 대한 액세스를 제한하는 간단한 메커니즘을 제공합니다. IAM 보안 주체에 연결된 IAM 정책에 글로벌 조건(`[aws:RequestedRegion](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion)`)을 추가하여 이 정책을 모든 AWS 서비스에 적용할 수 있습니다. 예를 들어, [다음 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-requested-region.html)은 `Deny` 효과가 있는 `NotAction` 요소를 사용하며, 이 요소는 요청된 리전이 유럽이 아닌 경우 문에 나열되지 않은 모든 작업에 대한 액세스를 명시적으로 거부합니다. CloudFront, IAM, [Amazon Route 53](https://aws.amazon.com/route53/) 및 [AWS Support](https://aws.amazon.com/premiumsupport/) 서비스의 작업은 널리 사용되는 AWS 글로벌 서비스이므로 거부해서는 안 됩니다. 

```
      {
         “Version”: “2012-10-17”,
         “Statement”: [
             {
                “Sid”: “DenyAllOutsideRequestedRegions”,
                “Effect”: “Deny”,
                “NotAction”: [
                     “cloudfront:*”,
                     “iam:*”,
                     ”route53:*”,
                     “support:*”
                 ],
                 “Resource”: “*”,
                 “Condition”: {
                    “StringNotLike”: {
                        “aws:RequestedRegion”: [
                              “eu-*”
                        ]
                     } 
                  }
            }    
          ]           
}
```

이 샘플 IAM 정책을 AWS Organizations에서 서비스 제어 정책(SCP)으로 구현할 수도 있습니다. 이 정책은 조직 내의 특정 AWS 계정 또는 조직 단위(OU)에 적용되는 권한 경계를 정의합니다. 이렇게 하면 복잡한 다중 계정 환경에서 리전 서비스에 대한 사용자 액세스를 제어할 수 있습니다.

새로 시작된 리전에는 지리적 제한 기능이 있습니다. [2019년 3월 20일 이후에 도입된 리전](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)은 기본적으로 비활성화되어 있습니다. 이 리전을 사용하려면 먼저 활성화해야 합니다. AWS 리전이 기본적으로 비활성화되어 있는 경우 AWS 관리 콘솔을 사용하여 리전을 활성화하고 비활성화할 수 있습니다. AWS 리전을 활성화하거나 비활성화하여 AWS 계정에 있는 사용자가 해당 리전의 리소스에 액세스할 수 있는지 여부를 제어할 수 있습니다. 자세한 내용은 [AWS 리전 관리](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)를 참조하세요.

# 웹 애플리케이션 및 모바일 앱에 대한 액세스 제어
<a name="control-access-to-web-applications-and-mobile-apps"></a>

AWS는 고객 애플리케이션 내에서 데이터 액세스 제어를 관리하기 위한 서비스를 제공합니다. 웹 애플리케이션과 모바일 앱에 사용자 로그인 및 액세스 제어 기능을 추가해야 하는 경우 [Amazon Cognito](https://aws.amazon.com/cognito/)를 사용할 수 있습니다. [Amazon Cognito 사용자 풀](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html)은 수억 명의 사용자로 크기 조정할 수 있는 안전한 사용자 디렉터리를 제공합니다. 사용자의 자격 증명을 보호하려면 멀티 팩터 인증(MFA)을 사용자 풀에 추가할 수 있습니다. 또한 적응형 인증도 사용할 수 있습니다. 이 인증은 위험 기반 모델을 사용하여 다른 인증 요소가 필요할 수 있는 시간을 예측할 수 있습니다. 

[Amazon Cognito 자격 증명 풀](https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html)(페더레이션 자격 증명)을 사용하면 누가 리소스에 액세스했으며 어디에서 액세스가 시작되었는지(모바일 앱 또는 웹 애플리케이션)를 확인할 수 있습니다. 이 정보를 사용하여 액세스 시작 위치(모바일 앱 또는 웹 애플리케이션)와 자격 증명 공급자의 유형을 기반으로 리소스에 대한 액세스를 허용하거나 거부하는 IAM 역할 및 정책을 생성할 수 있습니다.