기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS 계정의 에이전트 액세스 제한
AWS DevOps Agent는 IAM 역할을 사용하여 인시던트 조사 및 예방 평가 중에 AWS 리소스를 검색하고 설명합니다. 이러한 역할에 연결된 IAM 정책을 구성하여 에이전트가 갖는 액세스 수준을 제어할 수 있습니다. 애플리케이션 토폴로지에는 에이전트가 액세스할 수 있는 모든 것이 표시되지 않습니다. IAM 정책은 에이전트가 액세스할 수 있는 AWS 서비스 APIs 및 리소스를 실제로 제한하는 유일한 방법입니다.
AWS DevOps 에이전트의 IAM 역할 이해
AWS DevOps Agent는 IAM 역할을 사용하여 두 가지 유형의 계정의 리소스에 액세스합니다.
기본 계정 역할 - 에이전트 스페이스를 생성하는 AWS 계정의 리소스에 대한 액세스 권한을 에이전트에게 부여합니다.
보조 계정 역할 - 에이전트 스페이스에 연결하는 추가 AWS 계정의 리소스에 대한 액세스 권한을 에이전트에게 부여합니다.
두 계정 유형 중 하나에 대해 에이전트가 액세스할 수 있는 AWS 서비스를 제한하고, 해당 서비스 내의 특정 리소스에 대한 액세스를 제한하고, 에이전트가 작동할 수 있는 리전을 제어할 수 있습니다.
권한 가드레일 이해
AWS DevOps Agent는 AWS 리소스에 액세스할 때 생성하는 모든 세션에 권한 가드레일을 적용합니다. 이 가드레일은 상한 역할을 합니다. IAM 역할에 부여한 권한과 관계없이 에이전트가 사용할 수 있는 최대 권한 집합을 정의합니다.
작동 방식
에이전트가 IAM 역할을 수임하면 해당 세션에 대한 유효 권한을 제한하는 세션 정책을 전달합니다. 유효 권한은 다음과 같은 교차점입니다.
IAM 역할 정책 - 역할에 연결하는 관리형 정책 및 모든 인라인 정책입니다.
권한 가드레일 - 역할 수임 시 AWS DevOps 에이전트가 적용하는 세션 정책입니다.
권한을 적용하려면 두 계층에 모두 권한이 있어야 합니다. 가드레일에 포함되지 않은 권한을 역할에 추가하면 에이전트가 해당 권한을 사용할 수 없습니다.
기본 권한
AIDevOpsAgentAccessPolicy 관리형 정책은 에이전트가 조사에 사용하는 기본 읽기 전용 권한 세트를 제공합니다. 이러한 권한은 가드레일에 포함되므로 추가 구성 없이 작동합니다.
기본값 이상으로 권한 확장
AWS DevOps Agent는 기본 관리형 정책 이외의 선별된 추가 권한 세트를 지원합니다. 이러한 권한은 가드레일에 포함되지만 기본적으로 활성화되지 않습니다. 이를 사용하려면 역할에 특정 권한을 인라인 정책으로 추가합니다.
예를 들어, 에이전트가 조사 중에 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의 범위를 특정 버킷으로 지정할 수 있습니다.
지원되는 추가 권한
다음 권한은 가드레일에 포함되며 역할에 인라인 정책으로 추가하여 활성화할 수 있습니다. 기본적으로 부여되지 않으므로 명시적으로 옵트인해야 합니다.
| 서비스 | 작업 | 사용 사례: |
|---|---|---|
| Amazon S3 | s3:GetObject, s3:ListBucket |
S3에 저장된 애플리케이션 데이터, 로그 또는 구성 읽기 |
| AWS Direct Connect | directconnect:DescribeConnections, directconnect:DescribeDirectConnectGatewayAssociations, directconnect:DescribeDirectConnectGateways, directconnect:DescribeLags, directconnect:DescribeVirtualInterfaces |
네트워크 연결 문제 조사 |
가드레일에 의해 차단된 권한
가드레일에 없는 권한을 역할에 추가하면 에이전트가 해당 권한을 사용할 수 없습니다. 이는 설계상입니다. 가드레일은 역할이 허용하더라도 에이전트가 의도한 범위를 벗어나는 작업을 수행하지 못하도록 합니다.
예를 들어 , s3:PutObject ec2:TerminateInstances또는와 같은 쓰기 작업은 가드레일에 포함되지 dynamodb:DeleteItem 않습니다. 역할이 이러한 권한을 부여하더라도 에이전트는 이러한 작업을 수행할 수 없습니다.
요약
| 계층 | 이를 제어하는 사람 | 용도 |
|---|---|---|
| IAM 역할 정책 | 사용자 | 에이전트가 수행할 수 있는 작업 정의 |
| 권한 가드레일 | AWS DevOps 에이전트 | 에이전트가 수행할 수 있는 최대 수를 정의합니다. |
| 유효 권한 | 둘 다의 교차점 | 에이전트가 실제로 수행할 수 있는 작업 |
이 모델은 에이전트가 잘 정의된 보안 경계 내에서 작동하는 동시에 특정 사용 사례에 맞게 기능을 확장할 수 있는 유연성을 제공합니다.
리소스 경계 선택
리소스 액세스를 제한할 때는 에이전트가 애플리케이션 인시던트를 성공적으로 조사할 수 있는 충분한 권한을 포함해야 합니다. 여기에는 다음이 포함됩니다.
에이전트가 모니터링하고 조사해야 하는 범위 내 애플리케이션의 모든 리소스
해당 애플리케이션이 의존하는 모든 지원 인프라
지원 인프라에는 다음이 포함될 수 있습니다.
네트워킹 구성 요소(VPCs, 서브넷, 로드 밸런서, API 게이트웨이)
데이터 스토어(데이터베이스, 캐시, 객체 스토리지)
컴퓨팅 리소스(EC2 인스턴스, Lambda 함수, 컨테이너)
서비스 모니터링 및 로깅(CloudWatch, CloudTrail)
권한을 이해하는 데 필요한 자격 증명 및 액세스 관리 리소스
액세스를 너무 좁게 제한하면 에이전트가 정의된 경계 외부의 지원 인프라에서 시작된 근본 원인을 식별하지 못할 수 있습니다.
서비스 액세스 제한
에이전트의 역할에 연결된 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": "*" } ] }
리소스 액세스 제한
에이전트를 서비스 내의 특정 리소스로 제한하려면 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.
리전별 액세스 제한
에이전트가 액세스할 수 있는 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 정책 생성
에이전트 스페이스를 생성하거나 보조 계정을 추가할 때 정책 템플릿을 사용하여 사용자 지정 IAM 역할을 생성할 수 있습니다. 이를 통해 최소 권한 원칙을 구현할 수 있습니다.
에이전트 스페이스를 생성할 때
AWS 관리 콘솔의 DevOps 에이전트 콘솔에서...
정책 문서를 사용하여 새 DevOps 에이전트 역할 생성을 선택하고 지침을 따릅니다.
에이전트 스페이스를 편집할 때
AWS 관리 콘솔의 DevOps 에이전트 콘솔에서...
기능 탭을 선택합니다.
클라우드 섹션에서 편집하려는 보조 계정을 선택하고 편집을 클릭합니다.
템플릿을 사용하여 새 DevOps 에이전트 정책 생성을 선택하고 지침을 따릅니다.
사용자 지정 정책 모범 사례
읽기 전용 권한만 부여 - 리소스 수정 또는 삭제를 허용하는 권한 피하기
가능한 경우 리소스 수준 권한 사용 - ARN 패턴 또는 태그를 사용하여 특정 리소스에 대한 액세스 제한
정기적인 권한 검토 및 감사 - 에이전트의 IAM 정책을 정기적으로 검토하여 보안 요구 사항에 부합하는지 확인합니다.