

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# IAM을 사용하여 Kinesis Video Streams 리소스에 대한 액세스 제어
<a name="how-iam"></a>

Amazon Kinesis Video Streams와 함께 AWS Identity and Access Management (IAM)를 사용하여 조직의 사용자가 특정 Kinesis Video Streams API 작업을 사용하여 작업을 수행할 수 있는지 여부와 특정 AWS 리소스를 사용할 수 있는지 여부를 제어할 수 있습니다.

IAM에 대한 자세한 내용은 다음을 참조하십시오.
+ [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/)
+ [IAM 시작하기](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html)
+ [IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/)

**Topics**
+ [정책 구문](#policy-syntax)
+ [Kinesis Video Streams에 대한 작업](#kinesis-using-iam-actions)
+ [Kinesis Video Streams용 Amazon 리소스 이름(ARN)](#kinesis-using-iam-arn-format)
+ [다른 IAM 계정에 Kinesis 비디오 스트림에 대한 액세스 권한 부여](#how-iam-crossaccount)
+ [Kinesis Video Streams에 대한 정책 예제](#how-iam-policies)

## 정책 구문
<a name="policy-syntax"></a>

IAM 정책은 하나 이상의 문으로 구성된 JSON 문서입니다. 각 명령문의 구조는 다음과 같습니다.

```
{
  "Statement":[{
    "Effect":"effect",
    "Action":"action",
    "Resource":"arn",
    "Condition":{
      "condition":{
        "key":"value"
        }
      }
    }
  ]
}
```

명령문을 이루는 요소는 다양합니다.
+ **효과** - *효과는* `Allow` 또는 일 수 있습니다`Deny`. 기본적으로 사용자에게는 리소스 및 API 작업을 사용할 권한이 없으므로 모든 요청이 거부됩니다. 명시적 허용은 기본 설정을 무시합니다. 명시적 거부는 모든 허용을 무시합니다.
+ **작업** - *작업은* 권한을 부여하거나 거부하는 특정 API 작업입니다.
+ **리소스** - 작업의 영향을 받는 리소스입니다. 명령문에서 리소스를 지정하려면 Amazon 리소스 이름(ARN)을 사용해야 합니다.
+ **조건**: 조건은 선택 사항으로서 정책이 적용되는 시점을 제어하는 데 사용할 수 있습니다.

IAM 정책을 생성하고 관리할 때는 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-generator)기와 [IAM 정책 시뮬레이터](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html)를 사용하는 것이 좋습니다.

## Kinesis Video Streams에 대한 작업
<a name="kinesis-using-iam-actions"></a>

IAM 정책 설명에는 IAM을 지원하는 모든 서비스의 모든 API 작업을 지정할 수 있습니다. Kinesis Video Streams의 경우 API 작업 이름과 함께 접두사를 사용합니다`kinesisvideo:`. 예를 들어, `kinesisvideo:CreateStream`, `kinesisvideo:ListStreams` 및 `kinesisvideo:DescribeStream`입니다.

문 하나에 여러 작업을 지정하려면 다음과 같이 쉼표로 구분합니다.

```
"Action": ["kinesisvideo:action1", "kinesisvideo:action2"]
```

와일드카드를 사용하여 여러 작업을 지정할 수도 있습니다. 예를 들어 다음과 같이 이름이 "Get"으로 시작되는 모든 작업을 지정할 수 있습니다.

```
"Action": "kinesisvideo:Get*"
```

모든 Kinesis Video Streams 작업을 지정하려면 다음과 같이 별표(\$1) 와일드카드를 사용합니다.

```
"Action": "kinesisvideo:*"
```

Kinesis Video Streams API 작업의 전체 목록은 [https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_Reference.html](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_Reference.html)를 참조하세요.

## Kinesis Video Streams용 Amazon 리소스 이름(ARN)
<a name="kinesis-using-iam-arn-format"></a>

각 IAM 정책 명령문은 ARN을 사용하여 지정한 리소스에 적용됩니다.

Kinesis Video Streams에는 다음 ARN 리소스 형식을 사용합니다.

```
arn:aws:kinesisvideo:region:account-id:stream/stream-name/code
```

예제:

```
"Resource": arn:aws:kinesisvideo:*:111122223333:stream/my-stream/0123456789012
```

[DescribeStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DescribeStream.html)을 사용하여 스트림의 ARN을 가져올 수 있습니다.

## 다른 IAM 계정에 Kinesis 비디오 스트림에 대한 액세스 권한 부여
<a name="how-iam-crossaccount"></a>

Kinesis Video Streams의 스트림에서 작업을 수행하려면 다른 IAM 계정에 권한을 부여해야 할 수 있습니다. 다음의 개요는 여러 계정에 걸쳐 비디오 스트림 액세스 권한을 부여하는 일반적인 단계를 설명한 것입니다.

1. 계정에 생성된 스트림 리소스에 대한 작업을 수행할 권한을 부여하려는 계정의 12자리 계정 ID를 가져옵니다.

   **예:** 다음 단계에서는 권한을 부여하려는 계정의 계정 ID로 111111111111을 사용하고 Kinesis Video Streams의 ID로 999999999999을 사용합니다.

1. 스트림(999999999999)을 소유한 계정에서 부여하려는 액세스 수준을 허용하는 IAM 관리형 정책을 생성합니다.

   **샘플 정책: **

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "kinesisvideo:GetDataEndpoint",
                   "kinesisvideo:DescribeStream",
                   "kinesisvideo:PutMedia"
               ],
               "Resource": "arn:aws:kinesisvideo:us-west-2:999999999999:stream/custom-stream-name/1613732218179"
           }
       ]
   }
   ```

------

   Kinesis Video Streams 리소스에 대한 다른 예제 정책은 다음 섹션[정책 예제](#how-iam-policies)의 섹션을 참조하세요.

1. 스트림을 소유한 계정(999999999999)에서 역할을 생성하고 (111111111111)에 권한을 부여할 계정을 지정합니다. 이렇게 하면 신뢰할 수 있는 엔터티가 역할에 추가됩니다.

   **신뢰할 수 있는 정책 샘플: **

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111111111111:root"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

   이전 단계에서 생성한 정책을이 역할에 연결합니다.

   이제 관리형 정책의 스트림 리소스 ARN에서 `DescribeStream`, `GetDataEndpoint`및와 같은 작업에 대한 권한이 있는 역할을 계정 999999999999`PutMedia`에 생성했습니다. 이 새 역할은 다른 계정인 111111111111도이 역할을 수임하도록 신뢰합니다.
**중요**  
역할 ARN을 기록해 둡니다. 다음 단계에서 필요합니다.

1. 이전 단계에서 계정 111111111111에서 생성한 역할에 대한 `AssumeRole` 작업을 허용하는 관리형 정책을 다른 계정 999999999999에서 생성합니다. 이전 단계의 역할 ARN을 언급해야 합니다.

   **샘플 정책: **

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::999999999999:role/CustomRoleName"
       }
   }
   ```

------

1. 이전 단계에서 생성한 정책을 계정 111111111111의 역할 또는 사용자와 같은 IAM 엔터티에 연결합니다. 이제이 사용자에게 계정 999999999999`CustomRoleName`에서 역할을 수임할 수 있는 권한이 있습니다.

   이 사용자의 자격 증명은 API를 호출 AWS STS `AssumeRole`하여 세션 자격 증명을 가져옵니다.이 자격 증명은 이후에 계정 999999999999에서 생성된 스트림에서 Kinesis Video Streams APIs 호출하는 데 사용됩니다.

   ```
   aws sts assume-role --role-arn "arn:aws:iam::999999999999:role/CustomRoleName" --role-session-name "kvs-cross-account-assume-role"
   {
       "Credentials": {
           "AccessKeyId": "",
           "SecretAccessKey": "",
           "SessionToken": "",
           "Expiration": ""
       },
       "AssumedRoleUser": {
           "AssumedRoleId": "",
           "Arn": ""
       }
   }
   ```

1. 환경의 이전 세트를 기반으로 액세스 키, 보안 키 및 세션 자격 증명을 설정합니다.

   ```
   set AWS_ACCESS_KEY_ID=
   set AWS_SECRET_ACCESS_KEY=
   set AWS_SESSION_TOKEN=
   ```

1. Kinesis Video Streams APIs 실행하여 계정 999999999999의 스트림에 대한 데이터 엔드포인트를 설명하고 가져옵니다.

   ```
   aws kinesisvideo describe-stream --stream-arn "arn:aws:kinesisvideo:us-west-2:999999999999:stream/custom-stream-name/1613732218179"
   {
       "StreamInfo": {
           "StreamName": "custom-stream-name",
           "StreamARN": "arn:aws:kinesisvideo:us-west-2:999999999999:stream/custom-stream-name/1613732218179",
           "KmsKeyId": "arn:aws:kms:us-west-2:999999999999:alias/aws/kinesisvideo",
           "Version": "abcd",
           "Status": "ACTIVE",
           "CreationTime": "2018-02-19T10:56:58.179000+00:00",
           "DataRetentionInHours": 24
       }
   }
   
   aws kinesisvideo get-data-endpoint --stream-arn "arn:aws:kinesisvideo:us-west-2:999999999999:stream/custom-stream-name/1613732218179" --api-name "PUT_MEDIA"
   {
       "DataEndpoint": "https://s-b12345.kinesisvideo.us-west-2.amazonaws.com"
   }
   ```

교차 계정 액세스 권한 부여에 대한 일반적인 step-by-step 지침은 [IAM 역할을 AWS 계정 사용하여 전체에서 액세스 권한 위임을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html).

## Kinesis Video Streams에 대한 정책 예제
<a name="how-iam-policies"></a>

다음 예제 정책은 Kinesis Video Streams에 대한 사용자 액세스를 제어하는 방법을 보여줍니다.

**Example 1: 사용자가 모든 Kinesis 비디오 스트림에서 데이터를 가져오도록 허용**  
이 정책은 사용자 또는 그룹이 모든 Kinesis 비디오 스트림에서 `DescribeStream`, `GetDataEndpoint`, `GetMedia``ListStreams`, 및 `ListTagsForStream` 작업을 수행할 수 있도록 허용합니다. 이 정책은 임의의 비디오 스트림에서 데이터를 가져올 수 있는 사용자에게 해당됩니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesisvideo:Describe*",
                "kinesisvideo:Get*",
                "kinesisvideo:List*"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example 2: 사용자가 Kinesis 비디오 스트림을 생성하고 여기에 데이터를 쓸 수 있도록 허용**  
이 정책을 사용하면 사용자 또는 그룹이 `CreateStream` 및 `PutMedia` 작업을 수행할 수 있습니다. 이 정책은 비디오 스트림을 생성하고 데이터를 생성된 스트림에 전송할 수 있는 보안 카메라에 해당됩니다.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesisvideo:CreateStream",
                "kinesisvideo:PutMedia"            
            ],
            "Resource": "*"
        }
    ]
}
```

**Example 3: 사용자에게 모든 Kinesis Video Streams 리소스에 대한 전체 액세스 허용**  
이 정책을 통해 사용자 또는 그룹은 모든 리소스에서 모든 Kinesis Video Streams 작업을 수행할 수 있습니다. 이 정책은 관리자에 해당됩니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kinesisvideo:*",
            "Resource": "*"
        }
    ]
}
```

**Example 4: 사용자가 특정 Kinesis 비디오 스트림에 데이터를 쓰도록 허용**  
이 정책을 사용하면 사용자 또는 그룹이 특정 비디오 스트림에 데이터를 작성할 수 있습니다. 이 정책은 단일 스트림에 데이터를 전송할 수 있는 디바이스에 해당됩니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kinesisvideo:PutMedia",
            "Resource": "arn:aws:kinesisvideo:us-west-2:123456789012:stream/your_stream/0123456789012"
        }
    ]
}
```