

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

# 限制 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="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 政策，以確保其仍符合您的安全需求