

# CloudWatch RUM을 사용하는 IAM 정책
<a name="CloudWatch-RUM-permissions"></a>

CloudWatch RUM을 완벽하게 관리하려면 **AmazonCloudWatchRUMFullAccess** IAM 정책을 포함하는 IAM 사용자 또는 역할로 로그인해야 합니다. 또한 다음과 같은 다른 정책이나 권한이 필요할 수 있습니다.
+ 권한 부여를 위해 새 Amazon Cognito 자격 증명 풀을 생성하는 앱 모니터를 만들려면 **관리자(Admin)** IAM 역할 또는 **AdministratorAccess** IAM 정책이 있어야 합니다.
+ CloudWatch Logs로 데이터를 전송하는 앱 모니터를 생성하려면 다음 권한을 가진 IAM 역할 또는 정책에 로그온해야 합니다.

  ```
  {
      "Effect": "Allow",
      "Action": [
          "logs:PutResourcePolicy"
      ],
      "Resource": [
          "*"
      ]
  }
  ```
+ 앱 모니터에서 JavaScript 소스 맵을 활성화하려면 소스 맵 파일을 Amazon S3 버킷에 업로드해야 합니다. IAM 역할 또는 정책에는 Amazon S3 버킷 생성, 버킷 정책 설정 및 버킷의 파일 관리를 허용하는 특정 Amazon S3 권한이 필요합니다. 보안을 위해 이러한 권한의 범위를 특정 리소스로 지정합니다. 아래 예제 정책은 이름에 `rum`이 포함된 버킷에 대한 액세스를 제한하고 `aws:ResourceAccount` 조건 키를 사용하여 권한을 보안 주체 계정만으로 제한합니다.

  ```
  {
      "Sid": "AllowS3BucketCreationAndListing",
      "Effect": "Allow",
      "Action": [
          "s3:CreateBucket",
          "s3:ListAllMyBuckets"
      ],
      "Resource": "arn:aws:s3:::*",
      "Condition": {
          "StringEquals": {
              "aws:ResourceAccount": "${aws:PrincipalAccount}"
          }
      }
  },
  {
      "Sid": "AllowS3BucketActions",
      "Effect": "Allow",
      "Action": [
          "s3:GetBucketLocation",
          "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::*rum*",
      "Condition": {
          "StringEquals": {
              "aws:ResourceAccount": "${aws:PrincipalAccount}"
          }
      }
  },
  {
      "Sid": "AllowS3BucketPolicyActions",
      "Effect": "Allow",
      "Action": [
          "s3:PutBucketPolicy",
          "s3:GetBucketPolicy"
      ],
      "Resource": "arn:aws:s3:::*rum*",
      "Condition": {
          "StringEquals": {
              "aws:ResourceAccount": "${aws:PrincipalAccount}"
          }
      }
  },
  {
      "Sid": "AllowS3ObjectActions",
      "Effect": "Allow",
      "Action": [
          "s3:GetObject",
          "s3:PutObject",
          "s3:DeleteObject",
          "s3:AbortMultipartUpload"
      ],
      "Resource": "arn:aws:s3:::*rum*",
      "Condition": {
          "StringEquals": {
              "aws:ResourceAccount": "${aws:PrincipalAccount}"
          }
      }
  }
  ```
+ 소스 맵 버킷에서 서버 측 암호화에 자체 AWS KMS 키를 사용하려면 IAM 역할 또는 정책에는 키를 생성하고, 키 정책을 업데이트하고, Amazon S3에서 AWS KMS 키를 사용하고, Amazon S3 버킷의 암호화 구성을 설정할 수 있는 특정 AWS KMS 권한이 필요합니다. 보안을 위해 이러한 권한의 범위를 특정 용도로 지정합니다. 아래 예제에서는 특정 리전 및 accountId의 키에 대한 액세스를 제한하고 위의 예제와 유사한 S3 제한을 적용합니다.

  ```
  {
      "Sid": "AllowKMSKeyCreation",
      "Effect": "Allow",
      "Action": [
          "kms:CreateKey",
          "kms:CreateAlias"
      ],
      "Resource": "*"
  },
  {
      "Sid": "KMSReadPermissions",
      "Effect": "Allow",
      "Action": [
          "kms:ListAliases"
      ],
      "Resource": "*"
  },
  {
      "Sid": "AllowUpdatingKeyPolicy",
      "Effect": "Allow",
      "Action": [
          "kms:PutKeyPolicy",
          "kms:GetKeyPolicy",
          "kms:ListKeyPolicies"
      ],
      "Resource": "arn:aws:kms:{{REGION}}:{{ACCOUNT_ID}}:key/*"
  },
  {
      "Sid": "AllowUseOfKMSKeyForS3",
      "Effect": "Allow",
      "Action": [
          "kms:DescribeKey",
          "kms:Encrypt",
          "kms:Decrypt",
          "kms:GenerateDataKey"
      ],
      "Resource": "arn:aws:kms:{{REGION}}:{{ACCOUNT_ID}}:key/*"
  },
  {
      "Sid": "AllowS3EncryptionConfiguration",
      "Effect": "Allow",
      "Action": [
          "s3:PutEncryptionConfiguration",
          "s3:GetEncryptionConfiguration"
      ],
      "Resource": "arn:aws:s3:::*rum*",
      "Condition": {
          "StringEquals": {
              "aws:ResourceAccount": "${aws:PrincipalAccount}"
          }
      }
  }
  ```

CloudWatch RUM 데이터를 조회해야 하지만 CloudWatch RUM 리소스를 만들 필요는 없는 다른 사용자에게 **AmazonCloudWatchRUMReadOnlyAccess** 정책을 부여할 수 있습니다.