

# IVS 챗의 Identity and Access Management(IAM)
<a name="security-iam"></a>

AWS Identity and Access Management(IAM)는 계정 관리자가 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있도록 지원하는 AWS 서비스입니다. IVS 저지연 스트리밍 사용 설명서의 [Identity and Access Management in IVS](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/security-iam.html)를 참조하세요.**

## 대상
<a name="security-iam-audience"></a>

IAM을 사용하는 방법은 Amazon IVS에서 수행하는 작업에 따라 달라집니다. IVS 저지연 스트리밍 사용 설명서의 [고객](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/security-iam.html#security-iam-audience)을 참조하세요.**

## Amazon IVS가 IAM과 연동하는 방식
<a name="security-iam-how-ivs-works"></a>

Amazon IVS API 요청을 하기 전에 먼저 하나 이상의 IAM 자격 증명(사용자, 그룹 및 역할) 및 IAM 정책을 생성한 다음, 정책을 자격 증명에 연결해야 합니다. 권한이 전파되는 데에는 몇 분 정도 소요되며 그때까지 API 요청은 거부됩니다.

Amazon IVS가 IAM과 작동하는 방식에 대한 자세한 내용은 *IAM 사용 설명서*에서 [IAM으로 작업하는 AWS 서비스](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)를 참조하세요.

## 자격 증명
<a name="security-iam-identities"></a>

IAM 자격 증명을 생성하여 AWS 계정의 사용자 및 프로세스에 대한 인증을 제공할 수 있습니다. IAM 그룹은 하나의 단위로 관리할 수 있는 IAM 사용자 모음입니다. [IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)에서 *자격 증명(사용자, 그룹, 및 역할)*을 참조하세요.

## 정책
<a name="security-iam-policies"></a>

정책은 JSON 권한이며, 정책 문서는 *요소*로 구성됩니다. IVS 저지연 스트리밍 사용 설명서에서 [정책](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/security-iam.html#security-iam-policies)을 참조하세요.**

Amazon IVS Chat은 다음 세 가지 요소를 지원합니다.
+ **작업** - Amazon IVS Chat에 대한 정책 작업은 작업 앞에 `ivschat` 접두사를 사용합니다. 예를 들어, Amazon IVS Chat `CreateRoom` API 메서드로 Amazon IVS Chat 채팅방을 생성할 권한을 누군가에게 부여하려면 해당 개인에게 적용할 정책에 `ivschat:CreateRoom` 작업을 포함합니다. 정책 문에는 `Action` 또는 `NotAction` 요소가 포함되어야 합니다.
+ **리소스** - Amazon IVS Chat 채팅방 리소스에는 다음 [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 형식이 있습니다.

  ```
  arn:aws:ivschat:${Region}:${Account}:room/${roomId}
  ```

  예를 들어, 명령문에서 `VgNkEJgOVX9N` 채팅방을 지정하려면 다음 ARN을 사용합니다.

  ```
  "Resource": "arn:aws:ivschat:us-west-2:123456789012:room/VgNkEJgOVX9N"
  ```

  리소스 생성과 같은 일부 Amazon IVS Chat 작업은 특정 리소스에서 수행할 수 없습니다. 이러한 경우, 와일드카드(`*`)를 사용해야 합니다.

  ```
  "Resource":"*"
  ```
+ **조건** - Amazon IVS Chat은 `aws:RequestTag`, `aws:TagKeys`, `aws:ResourceTag` 같은 몇 가지 글로벌 조건 키를 지원합니다.

정책에서 변수를 자리 표시자로 사용할 수 있습니다. 예를 들어, 사용자의 IAM 사용자 이름으로 태그가 지정된 경우에만 IAM 사용자에게 리소스에 액세스할 수 있는 권한을 부여할 수 있습니다. [IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)에서 변수 및 태그를 참조하세요.

Amazon IVS에서는 미리 구성된 권한 세트를 자격 증명에 부여하는 데 사용할 수 있는 AWS 관리형 정책을 제공합니다(읽기 전용 또는 전체 액세스). 아래에 표시된 자격 증명 기반 정책 대신에 관리형 정책을 사용하도록 선택할 수 있습니다. 자세한 내용은 [Amazon IVS Chat의 관리형 정책](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/security-iam-awsmanpol.html)을 참조하세요.

## Amazon IVS 태그를 기반으로 권한 부여
<a name="security-iam-authorization"></a>

Amazon IVS Chat 리소스에 태그를 연결하거나 Amazon IVS Chat에 대한 요청에서 태그를 전달할 수 있습니다. 태그를 기반으로 액세스를 제어하려면 `aws:ResourceTag/key-name`, `aws:RequestTag/key-name` 또는 `aws:TagKeys` 조건 키를 사용하여 정책의 조건 요소에서 태그 정보를 제공합니다. Amazon IVS Chat 리소스 태그 지정에 관한 자세한 내용은 [Amazon IVS Chat API 참조](https://docs.aws.amazon.com/ivs/latest/ChatAPIReference/Welcome.html)에서 ‘태그 지정’을 참조하세요.

## 역할
<a name="security-iam-roles"></a>

IAM 사용 설명서에서 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) 및 [임시 보안 인증 정보](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)를 참조하세요.

IAM *역할*은 특정 권한을 가지고 있는 AWS 계정 내 엔터티입니다.

Amazon IVS는 임시 보안 인증 정보를 지원합니다. 임시 자격 증명을 사용하여 페더레이션으로 로그인하거나 IAM 역할을 수임하거나 교차 계정 역할을 수임할 수 있습니다. [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) API 작업(예: `AssumeRole` 또는 `GetFederationToken`)을 호출하여 임시 보안 인증 정보를 가져옵니다.

## 권한 있는 액세스 및 권한 없는 액세스
<a name="security-iam-privileged-access"></a>

API 리소스는 권한 있는 액세스 권한을 지원합니다. 권한 없는 재생 액세스 권한은 프라이빗 채널을 통해 설정할 수 있습니다([Setting Up IVS Private Channels](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/private-channels.html) 참조).

## 정책에 대한 모범 사례
<a name="security-iam-policy-best-practices"></a>

자세한 내용은 [IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)에서 IAM 모범 사례를 참조하세요.

자격 증명 기반 정책은 매우 강력합니다. 이 정책은 계정에서 사용자가 Amazon IVS 리소스를 생성, 액세스 또는 삭제할 수 있는지 여부를 결정합니다. 이 작업으로 인해 AWS 계정에 비용이 발생할 수 있습니다. 다음 권장 사항을 따릅니다.
+ **최소 권한 부여** - 사용자 지정 정책을 생성할 때 오직 작업을 수행하는 데 필요한 권한만을 부여합니다. 최소한의 권한을 조합하는 것으로 시작하여 추후 필요에 따라 권한을 추가로 부여합니다. 이는 초기에 권한을 많이 부여한 후 나중에 이를 줄이는 것보다 더 안전한 방법입니다. 특히, 관리 액세스 권한을 위해 `ivschat:*`을(를) 예약한 후 이를 애플리케이션에서 사용하지 마시기 바랍니다.
+ **중요한 작업에 대해 Multi-Factor Authentication(MFA) 활성화** - 보안을 강화하기 위해 IAM 사용자가 중요한 리소스 또는 API 작업에 액세스할 때 MFA를 사용하도록 합니다.
+ **보안 강화를 위해 정책 조건 사용** – 실제로 가능한 경우 자격 증명 기반 정책이 리소스에 대한 액세스를 허용하는 조건을 정의합니다. 예를 들어, 요청할 수 있는 IP 주소의 범위를 지정하도록 조건을 작성할 수 있습니다. 지정된 날짜 또는 시간 범위 내에서만 요청을 허용하거나, SSL 또는 MFA를 사용해야 하는 조건을 작성할 수도 있습니다.

## 자격 증명 기반 정책 예제
<a name="security-iam-policy-examples"></a>

### Amazon IVS 콘솔 사용
<a name="security-iam-policy-examples-console"></a>

Amazon IVS 콘솔에 액세스하려면 AWS 계정의 Amazon IVS Chat 리소스에 대한 세부 정보를 나열하고 볼 수 있는 최소 권한이 있어야 합니다. 최소 필수 권한보다 더 제한적인 자격 증명 기반 정책을 생성하면 콘솔이 해당 정책에 연결된 엔터티에 대해 의도대로 작동하지 않습니다. Amazon IVS 콘솔에 대한 액세스를 보장하려면 자격 증명에 다음 정책을 연결합니다(*IAM 사용 설명서*에서 [IAM 권한 추가 및 제거 참조](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)).

다음 정책 부분은 다음에 대한 액세스를 제공합니다.
+ 모든 Amazon IVS Chat API 작업
+ 사용자의 Amazon IVS Chat [서비스 할당량](service-quotas.md)
+ Amazon IVS Chat 중재를 위해 lambda 나열 및 선택한 lambda에 대한 권한 추가
+ 챗 세션에 대한 지표를 가져오는 Amazon Cloudwatch

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": "ivschat:*",
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "servicequotas:ListServiceQuotas"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "cloudwatch:GetMetricData"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "lambda:AddPermission",
        "lambda:ListFunctions"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

------

## Amazon IVS Chat에 대한 리소스 기반 정책
<a name="security-chat-policy-examples"></a>

Amazon IVS Chat 서비스에 lambda 리소스를 호출하여 메시지를 검토할 수 있는 권한을 부여해야 합니다. 이를 위해 [AWS Lambda에서 리소스 기반 정책 사용](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)(*AWS Lambda 개발자 안내서*)의 지침을 준수하고 아래에 지정된 바와 같이 필드를 채워야 합니다.

lambda 리소스에 대한 액세스를 제어하기 위해 다음을 기반으로 조건을 사용할 수 있습니다.
+ `SourceArn` - 샘플 정책은 와일드카드(`*`)를 사용하여 계정의 모든 방이 lambda를 호출하도록 허용합니다. 필요에 따라 계정에 방을 지정하여 해당 방만 lambda를 호출할 수 있도록 할 수 있습니다.
+ `SourceAccount` - 아래 샘플 정책에서 AWS 계정 ID는 `123456789012`입니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Principal": {
            "Service": "ivschat.amazonaws.com"
         },
         "Action": [
            "lambda:InvokeFunction"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:lambda:us-west-2:123456789012:function:name",
         "Condition": {
            "StringEquals": {
               "AWS:SourceAccount": "123456789012"
            },
            "ArnLike": {
               "AWS:SourceArn": "arn:aws:ivschat:us-west-2:123456789012:room/*"
            }
         }
      }
   ]
}
```

------

## 문제 해결
<a name="security-iam-troubleshooting"></a>

Amazon IVS Chat 및 IAM에서 작업할 때 발생할 수 있는 일반적인 문제를 진단하고 수정하는 방법에 대한 자세한 내용은 *IVS Low-Latency Streaming 사용 설명서*의 [문제 해결](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/security-iam.html#security-iam-troubleshooting)을 참조하세요.