여러 계정에서 Session Manager 로깅을 위해 중앙 Amazon S3 버킷을 구성하려면 어떻게 해야 하나요?
AWS Systems Manager의 기능인 Session Manager에 대한 중앙 Amazon Simple Storage Service(Amazon S3) 로깅을 제 AWS 계정에 구성하려고 합니다.
간략한 설명
Systems Manager에서 Session Manager에 대한 Amazon S3 로깅을 식별하고 구성할 수 있습니다.
시작하기
AWS Systems Manager Agent(SSM Agent)는 동일한 AWS Identity and Access Management(IAM) 역할을 사용하여 자체적으로 활성화하고 Amazon S3에 로그를 업로드하세요. Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 연결된 IAM 인스턴스 프로파일 또는 기본 호스트 관리 구성에 구성된 IAM 역할을 사용할 수 있습니다.
구성을 완료하려면 다음 권한이 있어야 합니다.
- 권한에 사용되는 IAM 보안 주체를 소유한 계정은 IAM 정책을 통해 Amazon S3에 권한을 부여해야 합니다.
- 또한 S3 버킷 소유자는 버킷 정책 또는 액세스 제어 목록(ACL)을 통해 모든 계정에 권한을 부여해야 합니다.
- 버킷이 AWS Key Management Service(AWS KMS) 키로 암호화된 경우, IAM 정책을 생성하여 사용해야 합니다.
참고:
- SSM Agent에 권한을 부여하는 역할에 IAM 정책을 연결해야 합니다.
- 버킷을 암호화하는 데 사용되는 KMS 키도 KMS 키 정책을 통해 권한을 부여해야 합니다.
Session Manager에 대한 중앙 Amazon S3 버킷 로깅을 구성하려면 먼저 중앙 집중식 S3 버킷을 소유하는 기본 계정을 식별하세요. 다음 예에서는 계정 A가 중앙 집중식 버킷을 소유합니다.
그런 다음, 다음 단계를 완료하세요.
- 계정 A에서 하나 또는 두 개의 사용자 지정 AWS KMS 키와 하나의 사용자 지정 KMS 정책을 생성하세요.
- 계정 A에서 Systems Manager 로깅을 위한 S3 버킷을 생성하세요.
- 계정 A에서 S3 버킷에 대한 리소스 정책을 생성하세요.
- 다른 계정에서 IAM 정책을 생성하여 S3 버킷과 두 KMS 키 모두에 권한을 부여하세요.
- (선택 사항) Session Manager 쉘 프로파일을 사용하여 로깅을 생성하고 구성하세요.
- Session Manager 로깅이 대상 버킷에 구성되어 있고 KMS 키를 사용하고 있는지 확인하세요.
- 버킷에서 로그가 생성되는지 확인하세요.
해결 방법
참고: 권한 범위를 지정하기 위해 다음 예제 프로세스에서는 역할 및 AWS Organizations의 조건 키를 사용합니다. 추가 권한 제어가 필요한 경우, Session Manager에서 보안 주체 역할을 사용하는 것이 가장 좋습니다.
이 프로세스는 다음과 같은 주요 권한을 사용합니다.
- Systems Manager 권한을 제공하기 위한 AmazonSSMManagedInstanceCore IAM AWS 관리형 정책.
- S3 버킷의 암호화 구성을 설명하기 위한 s3:GetEncryptionConfiguration 권한.
- 암호화된 객체를 S3 버킷에 넣기 위한 s3:PutObject 및 s3:PutObjectAcl 권한.
- 버킷 및 Session Manager에 액세스할 때 KMS 키에 대한 액세스를 제공하기 위한 kms:Decrypt 및 kms:GenerateDataKey 권한.
- Organizations ID와 일치하지 않는 모든 보안 주체에 제한된 액세스를 허용하기 위한 aws:PrincipalOrgID: o-xxxxxxx 권한.
사전 요구 사항
다음 서비스의 엔드포인트에 연결되어 있어야 합니다.
- Amazon S3
- AWS KMS
- Systems Manager 및 Systems Manager 메시지
- Amazon EC2 메시지
KMS 키 생성
- 하나의 키를 생성하는 경우, 해당 키(키 1)를 Session Manager 로깅 버킷의 S3 암호화와 Session Manager 기본 설정 KMS 암호화에 사용하세요.
- 두 개의 키를 생성하는 경우, 첫 번째 KMS 키(키 1)를 사용하여 로깅을 위해 S3 버킷을 암호화하세요. 두 번째 KMS 키(키 2)를 사용하여 Session Manager 스트림을 Amazon S3 버킷으로 암호화하세요.
그런 다음, 각 키에 대해 ](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-overview.html)키 Sid를 생성하세요[. 각 키의 KMS 정책에 Sid 요소를 추가해야 합니다.
Session Manager가 세션을 암호화할 수 있게 하려면 Organizations에 다음 권한을 추가하세요.
참고: aws:PrincipalOrgID 값을 사용자의 Organizations ID 및 주요 ARN으로 바꾸세요.
{ "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-xxxxxxx" } } }
계정 A에 로그인하기 위한 S3 버킷 생성
계정 A에 Session Manager 데이터를 기록하기 위해 Amazon S3 버킷을 생성하세요. 버킷의 이름을 지정해야 합니다(예: customer_session_manager_logging_bucket). 암호화하기로 결정했다면 키 1을 사용하세요.
S3 버킷에 대한 리소스 정책 생성
세션을 기록하는 데 사용하는 버킷에 다음 리소스 정책을 적용하세요.
PrincipalOrgID의 조건 키를 사용하여 S3 버킷에 대한 액세스를 제한하려면 다음 리소스 정책을 S3 버킷에 추가하세요.
참고: 이 정책은 사용자의 조직 외부에 있는 보안 주체의 액세스 요청을 거부합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "s3:GetEncryptionConfiguration", "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-xxxxxxxxxxxxxx" } } }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket/*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-xxxxxxxxxxxxx" } } } ] }
IAM 정책 생성
먼저, S3 버킷과 키에 권한을 부여하기 위해 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)IAM 정책을 생성[하세요.
연결하려는 계정에서 사용하기 위해 다음 예제 정책을 사용자의 인스턴스 프로파일에 연결하세요. 인라인 정책 또는 고객 관리형 정책을 사용하여 정책을 연결할 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PutObjectsBucket", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Effect": "Allow", "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket/*" }, { "Sid": "ListBucketAndEncryptionConfig", "Action": [ "s3:GetEncryptionConfiguration" ], "Effect": "Allow", "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket" }, { "Sid": "S3KMSSessionManagerKMS", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:us-east-1:ACCOUNTId:key/YOUR-KMS-FOR-SessionManagerEncryption", "arn:aws:kms:us-east-1:ACCOUNTID:key/YOUR-KMS-FOR-S3BucketEncryption" ] } ] }
(선택 사항) Session Manager 쉘 프로파일을 사용하여 로깅 생성 및 구성
사용자 지정 쉘 프로파일을 생성하려면 먼저 파일을 생성하세요. 그런 다음, 파일을 설명 이름(예: SessionManagerRunShell.json)으로 저장하세요. 이 .json 파일의 콘텐츠를 다음 예제로 바꾸세요.
참고: customer_session_manager_logging_bucket을 사용자의 버킷 이름으로 바꾸고, YOUR-KMS-FOR-SessionManagerEncryption을 사용자의 Session Manager에 지정된 키로 바꾸세요.
{ "schemaVersion": "1.0", "description": "Document to hold regional settings for Session Manager", "sessionType": "Standard_Stream", "inputs": { "s3BucketName": "customer_session_manager_logging_bucket", "s3KeyPrefix": "", "s3EncryptionEnabled": true, "cloudWatchLogGroupName": "", "cloudWatchEncryptionEnabled": false, "cloudWatchStreamingEnabled": false, "kmsKeyId": "arn:aws:kms:REGION:ACCOUNTID:key/YOUR-KMS-FOR-SessionManagerEncryption", "runAsDefaultUser": "", "idleSessionTimeout": "20", "maxSessionDuration": "", "shellProfile": {"windows": "", "linux": ""} } }
다음 명령을 실행하여 이 파일을 기본 Session Manager 문서로 저장하세요.
aws ssm update-document --name "SSM-SessionManagerRunShell" --content "file://SessionManagerRunShell.json" --document-version "$LATEST"
Session Manager 로깅이 대상 버킷에 구성되어 있고 KMS 키를 사용하고 있는지 확인
S3 버킷을 열고 버킷 암호화가 켜져 있는지 확인하세요. KMS ARN에서 Session Manager가 키 1을 사용하고 있는지 확인하세요.
참고: Session Manager 교차 계정 로깅을 구성할 때는 계정 ID의 접두사를 사용하는 것이 가장 좋습니다. 이렇게 하면 계정과 관련 로그를 추적하는 데 도움이 됩니다.
Session Manager 기본 설정을 확인하려면 다음 단계를 완료하세요.
- Session Manager 콘솔을 연 다음 AWS 리전을 선택하세요.
- S3 버킷 암호화가 켜져 있는지 확인한 다음 계정 A에 있는 키 1의 ARN을 입력하세요.
- S3 버킷에서 계정 A에 있는 S3 버킷의 이름을 입력하세요.
버킷에서 로그가 생성되는지 확인
로그를 생성하려면 다른 계정에서 Session Manager를 사용하여 사용자의 인스턴스에 연결하세요.
다음 단계를 완료하세요.
- Session Manager 콘솔을 연 다음 리전을 선택하세요.
- 세션이 연결되고 다음 메시지가 표시되는지 확인하세요. "This Session is Encrypted using AWS KMS"
- 몇 가지 테스트 항목을 입력하여 로그를 생성한 다음 세션을 종료하세요.
- 계정 A에서 로깅을 위해 생성한 S3 버킷으로 이동하여 시간별 최신 로그를 찾으세요.
참고: 세션 연결을 끊은 후 로그가 채워지려면 30초 이상 시간이 걸릴 수 있습니다. 자세한 내용은 서버 액세스 로깅을 사용한 요청 로깅을 참조하세요.
관련 정보
관련 콘텐츠
- 질문됨 2년 전lg...
- 질문됨 5일 전lg...
- AWS 공식업데이트됨 2달 전
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 4년 전