내용으로 건너뛰기

여러 AWS 계정에서 Session Manager 로깅을 위해 중앙 Amazon S3 버킷을 구성하려면 어떻게 해야 합니까?

5분 분량
0

AWS Systems Manager의 기능인 Session Manager에 대한 중앙 Amazon Simple Storage Service(Amazon S3) 로깅을 AWS 계정에 구성하려고 합니다.

해결 방법

권한 구성

Systems Manager Agent(SSM Agent)는 동일한 AWS Identity and Access Management(IAM) 역할을 사용하여 로그를 활성화하고 Amazon S3에 업로드합니다.

다음 IAM 역할 중 하나를 사용할 수 있습니다.

권한을 부여하려면 다음 정책을 사용하십시오.

  • IAM 보안 주체를 소유한 AWS 계정은 IAM 정책을 사용하여 Amazon S3에 권한을 부여해야 합니다.
  • S3 버킷 소유자는 AWS Key Management Service(AWS KMS) 키 정책 또는 액세스 제어 목록(ACL)을 사용하여 모든 계정에 대한 액세스를 허용해야 합니다.
  • 버킷이 AWS KMS 키로 암호화된 경우 IAM 정책을 사용해야 합니다.
  • SSM Agent에 권한을 부여하는 역할에 IAM 정책을 연결해야 합니다.
  • KMS 키 정책을 사용하여 버킷을 암호화하는 데 사용하는 AWS KMS 키에 대한 액세스 권한을 부여해야 합니다.
  • Systems Manager 핵심 기능에 액세스하려면 AmazonSSMManagedInstanceCore AWS 관리형 정책을 사용해야 합니다.

Session Manager가 S3 버킷에 로그를 업로드하려면 다음 권한이 필요합니다.

  • 암호화된 객체를 S3 버킷에 업로드하기 위한 s3:PutObjects3:PutObjectAcl 권한
  • AWS KMS 키에 액세스할 수 있는 kms:Decryptkms:GenerateDataKey 권한
  • AWS Organizations에 있는 조직의 ID와 일치하지 않는 보안 주체에 대한 액세스를 제한하는 aws:PrincipalOrgID: o-xxxxxxx 권한

다음 엔드포인트에 대한 연결을 확인하십시오.

  • Amazon S3 엔드포인트: com.amazonaws.region.s3
  • AWS KMS 서비스 엔드포인트: com.amazonaws.region.kms
  • Systems Manager 엔드포인트: com.amazonaws.region.ssm
  • Systems Manager Session Manager 엔드포인트: com.amazonaws.region.ssmmessages
  • Amazon EC2 엔드포인트: com.amazonaws.region.ec2

AWS KMS 키 및 키 정책 생성

AWS KMS 키를 생성하여 S3 버킷과 Session Manager 로그를 암호화합니다.

하나의 키를 생성하여 Session Manager 로그와 AWS KMS 암호화를 모두 암호화하거나 각각에 대해 별도의 키를 생성할 수 있습니다.

각 키에 대해 Session Manager가 로그를 암호화할 수 있도록 AWS KMS 정책에 다음 키 명령문을 추가합니다.

{
  "Effect": "Allow",
  "Principal": {
    "AWS": "*"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "aws:PrincipalOrgID": "o-xxxxxxx"
    }
  }
}

참고: aws:PrincipalOrgID를 조직의 ID로 바꾸고 Principal을 IAM 역할의 ARN으로 바꾸십시오.

S3 버킷 및 버킷 정책 생성

S3 버킷을 생성하여 Session Manager 로그를 저장합니다. 자세한 내용은 범용 버킷 생성Amazon 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"
        }
      }
    }
  ]
}

로그 액세스 권한에 대한 자세한 내용은 로그 전송 권한을 참조하십시오.

S3 버킷과 AWS KMS 키에 액세스하기 위한 IAM 정책 생성

S3 버킷과 AWS KMS 키에 액세스할 수 있는 권한을 부여하는 IAM 정책을 생성합니다.  

계정에서 S3 버킷에 연결하는 데 사용하는 인스턴스 프로파일에 다음 예제 정책을 연결합니다. 

{
  "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"
      ]
    }
  ]
}

참고: 인라인 정책 또는 고객 관리형 정책을 사용할 수 있습니다. 자세한 내용은 AWS KMS에서 IAM 정책 사용을 참조하십시오.

(선택 사항) 로그에 대한 Session Manager 쉘 프로파일 구성

사용자 지정 쉘 프로파일을 생성하려면 JSON 파일을 만들고 콘텐츠를 제거한 후 다음 값으로 바꿉니다.

{
  "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": ""}
  }
}

참고: customer_session_manager_logging_bucket을 해당 버킷 이름으로 바꾸고, YOUR-KMS-FOR-SessionManagerEncryption을 Session Manager용으로 지정된 키로 바꾸십시오.

다음 명령을 실행하여 파일을 SessionManagerRunShell.json과 같은 이름을 가진 기본 Session Manager 문서로 저장합니다.

aws ssm update-document --name "SSM-SessionManagerRunShell" \
--content "file://SessionManagerRunShell.json" \   
--document-version "\$LATEST"

Session Manager 로깅 구성 확인

Amazon S3 콘솔을 열고 로깅 버킷으로 이동합니다. 버킷 설정에서 버킷 암호화가 활성화되어 있는지 확인합니다. 또한 AWS KMS 키 ARN이 키 1과 일치하는지 확인하여 Session Manager가 올바른 암호화 키를 사용하는지 확인합니다.

Session Manager 기본 설정을 확인하려면 다음 단계를 완료하십시오.

  1. Session Manager 콘솔을 엽니다.
  2. AWS 리전을 선택합니다.
  3. 암호화가 켜져 있는지 확인합니다.
  4. 키 1의 ARN을 입력합니다.
  5. 올바른 S3 버킷을 구성했는지 확인합니다.

버킷에서 로그가 생성되는지 확인

로그를 생성하려면 다른 계정에서 Session Manager를 사용합니다.

다음 단계를 완료하십시오.

  1. Session Manager를 사용하여 인스턴스에 연결합니다.
  2. 리전을 선택합니다.
  3. 세션이 연결되고 "This Session is Encrypted using AWS KMS."라는 메시지가 표시되는지 확인합니다.
  4. 테스트 항목을 입력하여 로그를 생성한 다음, 세션을 종료합니다.

참고: 세션이 종료된 후 로그가 표시되는 데는 30초 이상 걸릴 수 있습니다. 자세한 내용은 서버 액세스 로깅을 사용한 요청 로깅을 참조하십시오.

관련 정보

서버 측 암호화를 사용하여 데이터 보호

Amazon S3에 사용되는 작업, 리소스 및 조건 키

Amazon S3 버킷 정책의 예

Amazon S3에서 액세스 제어

AWS 공식업데이트됨 일 년 전