

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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 Agent는 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>

기본 `AIDevOpsAgentAccessPolicy` 관리형 정책은 가드레일이 허용하는 것의 하위 집합만 부여합니다. 가드레일은 `ReadOnlyAccess` AWS 관리형 정책의 모든 작업과 몇 가지 추가 권한도 허용합니다. 가드레일이 허용하지만 기본 정책이 부여하지 않는 권한을 사용하려면 역할에 인라인 정책으로 추가합니다.

예를 들어, 에이전트가 조사 중에 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>

역할에 인라인 정책으로 추가하여 가드레일이 지원하는 모든 권한을 활성화할 수 있습니다. 기본적으로 부여되지 않으므로 명시적으로 옵트인해야 합니다.

관리`AIDevOpsAgentAccessPolicy`형 정책의 권한만 에이전트와 함께 사용하기에 안전한지 완전히 테스트하고 확인했습니다. 가드레일이 지원하는 다른 권한은 에이전트와 함께 테스트되지 않았습니다. 이를 활성화하는 것은 [AWS 공동 책임 모델에](https://aws.amazon.com/compliance/shared-responsibility-model/) 속합니다. 이러한 작업이 에이전트가 리소스에 대해 수행하는 데 적합한지 여부를 평가할 책임은 사용자에게 있습니다. 최소 권한 원칙을 따르도록 범위를 지정합니다.

다음 표에는 `ReadOnlyAccess` 관리형 정책 외에 가드레일이 지원하는 추가 권한이 나열되어 있습니다.


| 서비스 | 작업 | 사용 사례: | 
| --- | --- | --- | 
| Amazon Athena | athena:StartQueryExecution, athena:StopQueryExecution | 데이터 카탈로그에 대해 Athena 쿼리 실행 | 
| AWS KMS | kms:Decrypt | S3 객체와 같은 암호화된 리소스 복호화 | 

**참고:**이 목록은 AWS DevOps Agent에 새 기능이 추가되면 시간이 지남에 따라 확장될 수 있습니다. 가드레일은 여기 또는 `AIDevOpsAgentAccessPolicy` 및 `ReadOnlyAccess` 관리형 정책에 나열되지 않은 모든 권한을 차단합니다.

### 가드레일에 의해 차단된 권한
<a name="permissions-blocked-by-the-guardrail"></a>

가드레일에 없는 권한을 역할에 추가하면 에이전트가 해당 권한을 사용할 수 없습니다. 이는 설계상입니다. 가드레일은 역할이 허용하더라도 에이전트가 의도한 범위를 벗어나는 작업을 수행하지 못하도록 합니다.

예를 들어 , `s3:PutObject` `ec2:TerminateInstances`또는와 같은 쓰기 작업은 가드레일에 포함되지 `dynamodb:DeleteItem` 않습니다. 역할이 이러한 권한을 부여하더라도 에이전트는 이러한 작업을 수행할 수 없습니다.

### 요약
<a name="summary"></a>


| 계층 | 이를 제어하는 사람 | 용도 | 
| --- | --- | --- | 
| 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 권한을 포함하지 마십시오.
+ **와일드카드 대신 특정 작업 사용** - `service:*` 권한을 부여하는 대신 `cloudwatch:GetMetricData` 또는와 같은 개별 작업을 지정합니다`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 에이전트 콘솔에서...
+ **정책 문서를 사용하여 새 DevOps 에이전트 역할 생성을** 선택하고 지침을 따릅니다.

**에이전트 스페이스를 편집할 때**

 AWS 관리 콘솔의 DevOps 에이전트 콘솔에서...
+ **기능** 탭을 선택합니다.
+ **클라우드** 섹션에서 편집하려는 보조 계정을 선택하고 편집을 선택합니다.
+ **템플릿을 사용하여 새 DevOps 에이전트 정책 생성을** 선택하고 지침을 따릅니다.

## 사용자 지정 정책 모범 사례
<a name="custom-policy-best-practices"></a>
+ **읽기 전용 권한만 부여 -** 리소스 수정 또는 삭제를 허용하는 권한 피하기
+ **가능한 경우 리소스 수준 권한 사용 -** ARN 패턴 또는 태그를 사용하여 특정 리소스에 대한 액세스 제한
+ **정기적으로 권한 검토 및 감사** - 에이전트의 IAM 정책을 정기적으로 검토하여 보안 요구 사항에 부합하는지 확인합니다.