

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 限制 AWS 帳戶中的客服人員存取
<a name="aws-devops-agent-security-limiting-agent-access-in-an-aws-account"></a>

AWS DevOps Agent 使用 IAM 角色在事件調查和預防性評估期間探索和描述 AWS 資源。您可以透過設定連接到這些角色的 IAM 政策來控制代理程式的存取層級。應用程式拓撲不會顯示代理程式可存取的所有內容，IAM 政策是真正限制代理程式可存取 AWS 的服務 APIs和資源的唯一方法。

## 了解 AWS 適用於 DevOps 代理程式的 IAM 角色
<a name="understanding-iam-roles-for-aws-devops-agent"></a>

AWS DevOps Agent 使用 IAM 角色來存取兩種帳戶中的資源：
+ **主要帳戶角色** – 授予代理程式存取您建立代理程式空間之 AWS 帳戶中的資源。
+ **次要帳戶角色** – 授予代理程式存取您連接至代理程式空間之其他 AWS 帳戶中的資源。

對於任一類型的帳戶，您可以限制代理程式可以存取 AWS 的服務、限制對這些服務中特定資源的存取，以及控制代理程式可以操作的區域。

## 了解許可護欄
<a name="understanding-permission-guardrails"></a>

AWS DevOps 代理程式會在存取您的 AWS 資源時，將許可護欄套用至其建立的每個工作階段。此護欄充當上限 — 它定義了代理程式可以使用的最大許可集，無論您在 IAM 角色上授予哪些許可。

### 運作方式
<a name="how-it-works"></a>

當代理程式擔任您的 IAM 角色時，它會傳遞[工作階段政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)，以限制該工作階段的有效許可。有效許可是以下項目的交集：

1. **您的 IAM 角色政策** — 受管政策以及您連接到角色的任何內嵌政策。

1. **許可護欄**： AWS DevOps 代理程式在擔任角色時間套用的工作階段政策。

兩個圖層中都必須存在許可才能生效。如果您將許可新增至未包含在護欄中的角色，則代理程式無法使用它。

### 預設許可
<a name="default-permissions"></a>

`AIDevOpsAgentAccessPolicy` 受管政策提供代理程式用於調查的預設唯讀許可集。這些許可包含在護欄中，因此它們在沒有其他組態的情況下運作。

### 將許可延伸到預設值之外
<a name="extending-permissions-beyond-the-default"></a>

AWS DevOps 代理程式支援一組精選的額外許可，這些許可超出預設的受管政策。這些許可包含在護欄中，但預設不會啟用。若要使用它們，請將特定許可新增至您的角色，做為內嵌政策。

例如，若要允許代理程式在調查期間從 S3 儲存貯體讀取物件，請將內嵌政策新增至您的角色：

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-application-bucket",
        "arn:aws:s3:::my-application-bucket/*"
      ]
    }
  ]
}
```

由於 `s3:GetObject`和 `s3:ListBucket` 包含在護欄中，此內嵌政策會生效。您可以將 範圍`Resource`限定為特定儲存貯體，以遵循最低權限原則。

### 支援的其他許可
<a name="supported-additional-permissions"></a>

下列許可包含在護欄中，可以透過將它們新增至您的角色做為內嵌政策來啟用。這些預設不會授予 - 您必須明確選擇加入。


| 服務 | 動作 | 使用案例 | 
| --- | --- | --- | 
| Amazon S3 | s3:GetObject, s3:ListBucket | 讀取存放在 S3 中的應用程式資料、日誌或組態 | 
| AWS Direct Connect | directconnect:DescribeConnections, directconnect:DescribeDirectConnectGatewayAssociations, directconnect:DescribeDirectConnectGateways, directconnect:DescribeLags, directconnect:DescribeVirtualInterfaces | 調查網路連線問題 | 

**注意：**隨著新功能新增至 AWS DevOps 代理程式，此清單可能會隨著時間擴展。未列於此處或`AIDevOpsAgentAccessPolicy`受管政策中的許可會被護欄封鎖。

### 護欄封鎖的許可
<a name="permissions-blocked-by-the-guardrail"></a>

如果您將許可新增至不在護欄中的角色，則代理程式無法使用它。這是根據設計 – 護欄可防止代理程式執行超出其預期範圍的動作，即使角色以其他方式允許。

例如， `s3:PutObject`、 `ec2:TerminateInstances`或 等寫入操作`dynamodb:DeleteItem`不包含在護欄中。即使您的角色授予這些許可，代理程式也無法執行這些動作。

### 摘要
<a name="summary"></a>


| Layer | 誰控制它 | 用途 | 
| --- | --- | --- | 
| IAM 角色政策 | 您 | 定義您希望客服人員能夠執行的動作 | 
| 許可護欄 | AWS DevOps 代理程式 | 定義客服人員可以執行的最大數量 | 
| 有效許可 | 兩者的交集 | 代理程式可以實際執行的操作 | 

此模型可確保代理程式在明確定義的安全界限內運作，同時讓您靈活地擴展特定使用案例的功能。

## 選擇您的資源界限
<a name="choosing-your-resource-boundaries"></a>

限制資源存取時，您需要包含足夠的許可，讓代理程式成功調查應用程式事件。其中包含：
+ 客服人員應監控和調查範圍內應用程式的所有資源
+ 這些應用程式依賴的所有支援基礎設施

支援基礎設施可能包括：
+ 網路元件 VPCs、子網路、負載平衡器、API 閘道）
+ 資料存放區 （資料庫、快取、物件儲存）
+ 運算資源 (EC2 執行個體、Lambda 函數、容器）
+ 監控和記錄服務 (CloudWatch、CloudTrail)
+ 了解許可所需的身分和存取管理資源

如果您限制存取太窄，代理程式可能無法識別源自於您定義界限外之支援基礎設施的根本原因。

## 限制服務存取
<a name="restricting-service-access"></a>

您可以修改連接至客服人員角色的 IAM 政策，以限制客服人員可存取 AWS 的服務。建立自訂政策時，請遵循下列最佳實務：
+ **授予唯讀許可** – 代理程式需要在調查期間讀取資源組態、指標和日誌。避免授予允許代理程式修改或刪除資源的許可。
+ **限制為必要服務** – 僅包含包含與您應用程式相關資源 AWS 的服務。例如，如果您的應用程式不使用 Amazon RDS，請勿在政策中包含 RDS 許可。
+ **使用特定動作而非萬用字元** – 指定個別動作，例如 `cloudwatch:GetMetricData`或 ，而非授予`service:*`許可`ec2:DescribeInstances`。

限制為特定 服務的政策範例：

```
json

{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:GetMetricData",
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:DescribeAlarms",
        "logs:GetLogEvents",
        "logs:FilterLogEvents",
        "ec2:DescribeInstances",
        "lambda:GetFunction",
        "lambda:GetFunctionConfiguration"
      ],
      "Resource": "*"
    }
  ]
}
```

## 限制資源存取
<a name="restricting-resource-access"></a>

若要將代理程式限制為服務中的特定資源，請在 IAM 政策中使用資源層級許可。這可讓您僅將存取權授予符合特定模式的資源。

**使用資源 ARN 模式：**

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "lambda:GetFunction",
        "lambda:GetFunctionConfiguration"
      ],
      "Resource": "arn:aws:lambda:*:*:function:production-*"
    }
  ]
}
```

此範例限制代理程式只能存取名稱開頭為 "production-" 的 Lambda 函數。

**使用標籤型限制：**

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceStatus"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Environment": "production"
        }
      }
    }
  ]
}
```

此範例限制代理程式只能存取以 標記的 EC2 執行個體`Environment=production`。

## 限制區域存取
<a name="restricting-regional-access"></a>

若要限制代理程式可存取 AWS 的區域，請在 IAM 政策中使用 `aws:RequestedRegion`條件索引鍵：

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "lambda:Get*",
        "cloudwatch:Get*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": [
            "us-east-1",
            "us-west-2"
          ]
        }
      }
    }
  ]
}
```

此範例限制代理程式只能存取 us-east-1 和 us-west-2 區域中的資源。

## 建立自訂 IAM 政策
<a name="creating-custom-iam-policies"></a>

當您建立客服人員空間或新增次要帳戶時，您可以選擇使用政策範本建立自訂 IAM 角色。這可讓您實作最低權限原則。

**建立客服人員空間時**

從 AWS 管理主控台中的 DevOps Agent 主控台...
+ 選擇**使用政策文件建立新的 DevOps 代理程式角色，**並依照指示操作

**編輯客服人員空間時**

從 AWS 管理主控台中的 DevOps Agent 主控台...
+ 選取**功能**索引標籤
+ 從**雲端**區段中選取您要編輯的次要帳戶，然後按一下編輯
+ 選擇**使用範本建立新的 DevOps 代理程式政策，**並依照指示操作

## 自訂政策最佳實務
<a name="custom-policy-best-practices"></a>
+ **授予唯讀許可** – 避免允許資源修改或刪除的許可
+ **盡可能使用資源層級許可** – 限制使用 ARN 模式或標籤存取特定資源
+ **定期檢閱和稽核許可** – 定期檢閱代理程式的 IAM 政策，以確保其仍符合您的安全需求