

# 資料存取控制
<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) 這項 Web 服務可以安全地控制您 AWS 資源的存取權。

使用者與角色定義具有特定許可的 IAM 身分。授權的使用者是具備執行特定任務能力的 IAM 角色。當角色確立之後，會建立暫時登入資料。例如，您可以使用 IAM 角色安全地為在 [Amazon Elastic Compute Cloud](https://aws.amazon.com/ec2) (Amazon EC2) 中執行的應用程式，提供存取其他 AWS 資源 (如 Amazon S3 儲存貯體與 [Amazon Relational Database Service](https://aws.amazon.com/rds/) (Amazon RDS)，或 [Amazon DynamoDB](https://aws.amazon.com/dynamodb) 資料庫) 所需的暫時登入資料。同樣地，[執行角色](https://docs.aws.amazon.com/lambda/latest/dg/lambda-permissions.html)也提供具有存取其他 AWS 服務與資源 (例如：用於串流日誌的 [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 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 函數等等) 的原則，分析授與的許可。

當儲存貯體設定為允許存取網際網路上的任何人或其他 AWS 帳戶 (包括您組織外部的 AWS 帳戶) 時，[Access Analyzer for S3](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/access-analyzer.html) 會提醒您。在檢查 Access Analyzer for Amazon S3 中存有風險的儲存貯體時，只須按一下滑鼠按鈕，就能禁止所有對儲存貯體的公開存取。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 安全慼證。 
+  暫時憑證是角色與聯合身分的基礎。您可以為使用者定義暫時的 AWS 身分，將您 AWS 資源的存取權提供給他們。 
+  暫時安全憑證的可以有限度地自訂生命期限。因此無須輪換憑證，也無須在不需要時明確撤銷。暫時安全憑證到期之後無法重複使用。您可以指定憑證的有效有效期限。

# 多重要素驗證
<a name="multi-factor-authentication"></a>

若要更進一步提升安全，可以為您的 AWS 帳戶及 IAM 使用者新增雙重要素驗證。啟用多重要素驗證 (MFA) 之後，當您登入 [AWS 管理主控台](https://aws.amazon.com/console/)時，就會提示您輸入使用者名稱與密碼 (第一個要素)，以及您 AWS MFA 裝置發出的驗證回應 (第二個要素)。您可以為您的 AWS 帳戶和您帳戶中建立的個別 IAM 使用者啟用 MFA。此外也可使用 MFA 控制 AWS 服務 API 的存取權。

 例如，您可以定義原則，授與 Amazon EC2 中所有 AWS API 作業的完整存取權，但明確拒絕未經 MFA 驗證的使用者，存取特定的 API 作業，例如 `StopInstances` 與 `TerminateInstances`。 

```
        {
         “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 刪除)，另外要求其他驗證，才能變更儲存貯體的版本狀態，以及永久刪除物件版本。MFA Delete (MFA 刪除) 是安全認證洩露時的另一層安全保護。

若要使用 MFA Delete (MFA 刪除)，可以使用硬體或虛擬 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)。

# 控制 Web 應用程式與行動應用程式的存取權
<a name="control-access-to-web-applications-and-mobile-apps"></a>

AWS 提供各種服務，讓您用來管理客戶應用程式中的資料存取控制。若您需要為您的 Web 應用程式與行動應用程式，新增使用者登入與存取控制功能，可以使用 [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 Identity Pools](https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html) (聯合身分)，您可以查看誰存取了您的資源，以及存取動作的來源位置 (行動應用程式或 Web 應用程式)。您可以使用此資訊建立 IAM 角色與政策，根據存取來源 (行動應用程式或 Web 應用程式) 與身分供應商的類型，允許或拒絕存取資源。