

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

# Amazon Kinesis Video Streams의 보안
<a name="security"></a>

의 클라우드 보안 AWS 이 최우선 순위입니다. AWS 고객은 보안에 가장 민감한 조직의 요구 사항을 충족하도록 구축된 데이터 센터 및 네트워크 아키텍처의 이점을 누릴 수 있습니다.

보안은 AWS 와 사용자 간의 공동 책임입니다. [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/)은 이를 클라우드*의* 보안과 클라우드 *내* 보안으로 설명합니다.
+ **클라우드 보안 **- AWS 는 클라우드에서 AWS AWS 서비스를 실행하는 인프라를 보호할 책임이 있습니다. AWS 또한는 안전하게 사용할 수 있는 서비스를 제공합니다. 서드 파티 감사자는 정기적으로 [AWS 규정 준수 프로그램](https://aws.amazon.com/compliance/programs/)의 일환으로 보안 효과를 테스트하고 검증합니다. Kinesis Video Streams에 적용되는 규정 준수 프로그램에 대한 자세한 내용은 [규정 준수 프로그램 제공 범위 내의AWS 서비스](https://aws.amazon.com/compliance/services-in-scope/)를 참조하세요.
+ **클라우드의 보안** - 사용자의 책임은 사용하는 AWS 서비스에 따라 결정됩니다. 또한 데이터의 민감도, 조직의 요건 및 관련 법률 및 규정을 비롯한 기타 요소에 대해서도 책임이 있습니다.

이 설명서는 Kinesis Video Streams를 사용할 때 공동 책임 모델을 적용하는 방법을 이해하는 데 도움이 됩니다. 다음 주제에서는 보안 및 규정 준수 목표에 맞게 Kinesis Video Streams를 구성하는 방법을 보여줍니다. 또한 Kinesis Video Streams 리소스를 모니터링하고 보호하는 데 도움이 되는 다른 AWS 서비스를 사용하는 방법을 알아봅니다.

**Topics**
+ [Kinesis Video Streams의 데이터 보호](how-kms.md)
+ [IAM을 사용하여 Kinesis Video Streams 리소스에 대한 액세스 제어](how-iam.md)
+ [를 사용하여 Kinesis Video Streams 리소스에 대한 액세스 제어 AWS IoT](how-iot.md)
+ [Amazon Kinesis Video Streams의 규정 준수 검증](akda-java-compliance.md)
+ [Amazon Kinesis Video Streams의 복원력](disaster-recovery-resiliency.md)
+ [Kinesis Video Streams의 인프라 보안](infrastructure-security.md)
+ [Kinesis Video Streams의 보안 모범 사례](security-best-practices.md)

# Kinesis Video Streams의 데이터 보호
<a name="how-kms"></a>

Amazon Kinesis Video Streams에서 저장 데이터를 암호화하여 AWS Key Management Service () 키를 사용하는 서버 측 암호화(SSE AWS KMS)를 사용하여 엄격한 데이터 관리 요구 사항을 충족할 수 있습니다.

**Topics**
+ [Kinesis Video Streams의 서버 측 암호화란 무엇입니까?](#what-is-sse-akvs)
+ [비용, 리전 및 성능 고려 사항](#costs-performance-akvs)
+ [서버 측 암호화를 시작하는 방법](#getting-started-with-sse-akvs)
+ [고객 관리형 키 생성 및 사용](#creating-using-sse-master-keys-akvs)
+ [고객 관리형 키를 사용할 수 있는 권한](#permissions-user-key-KMS-akvs)

## Kinesis Video Streams의 서버 측 암호화란 무엇입니까?
<a name="what-is-sse-akvs"></a>

서버 측 암호화는 사용자가 지정한 키를 사용하여 저장 시 저장되기 전에 데이터를 자동으로 암호화하는 Kinesis Video Streams의 AWS KMS 기능입니다. 데이터는 Kinesis Video Streams 스트림 스토리지 계층에 쓰여지기 전에 암호화되고 스토리지에서 검색된 후 해독됩니다. 결과적으로 데이터는 항상 Kinesis Video Streams 서비스 내에서 암호화됩니다.

서버 측 암호화를 사용하면 Kinesis 비디오 스트림 생산자와 소비자가 KMS 키 또는 암호화 작업을 관리할 필요가 없습니다. 데이터 보존이 활성화된 경우 데이터는 Kinesis Video Streams에 들어오고 나갈 때 자동으로 암호화되므로 저장 데이터는 암호화됩니다.는 서버 측 암호화 기능에서 사용하는 모든 키를 AWS KMS 제공합니다.는 AWS KMS 서비스로 가져온 AWS사용자 지정 키인에서 관리하는 Kinesis Video Streams에 대한 KMS AWS KMS 키 사용을 AWS KMS 간소화합니다.

## 비용, 리전 및 성능 고려 사항
<a name="costs-performance-akvs"></a>

서버 측 암호화를 적용하면 AWS KMS API 사용 및 키 비용이 부과됩니다. 사용자 지정 AWS KMS 키와 달리 기본 `aws/kinesisvideo` KMS 키는 무료로 제공됩니다. 그러나 Kinesis Video Streams가 사용자를 대신하여 발생시키는 API 사용 비용은 여전히 지불해야 합니다.

API 사용 비용은 사용자 지정 키를 포함한 모든 KMS 키에 적용됩니다. 각 사용자 자격 증명에는 고유한 API 호출이 필요하므로 AWS KMS 비용은 데이터 생산자 및 소비자에서 사용하는 사용자 자격 증명 수에 따라 조정됩니다 AWS KMS.

다음은 리소스별 비용에 대한 설명입니다.

**키**
+ ( AWS 별칭 = `aws/kinesisvideo`)에서 관리하는 Kinesis Video Streams의 KMS 키에는 요금이 부과되지 않습니다.
+ 사용자 생성 KMS 키에는 AWS KMS key 비용이 부과됩니다. 자세한 내용은 [AWS Key Management Service 요금](https://aws.amazon.com/kms/pricing/#Keys)을 참조하세요.

### AWS KMS API 사용
<a name="api-usage"></a>

새 데이터 암호화 키를 생성하거나 기존 암호화 키를 검색하기 위한 API 요청은 트래픽이 증가함에 따라 증가하며 AWS KMS 사용 비용이 부과됩니다. 자세한 내용은 [AWS Key Management Service 요금: 사용량](https://aws.amazon.com/kms/pricing/#Usage)을 참조하세요.

Kinesis Video Streams는 보존이 0(보존 없음)으로 설정된 경우에도 키 요청을 생성합니다.

### 리전별 서버 측 암호화 가용성
<a name="sse-regions-akvs"></a>

Kinesis 비디오 스트림의 서버 측 암호화는 Kinesis 비디오 스트림을 사용할 수 AWS 리전 있는 모든에서 사용할 수 있습니다.

## 서버 측 암호화를 시작하는 방법
<a name="getting-started-with-sse-akvs"></a>

서버 측 암호화는 Kinesis Video Streams에서 항상 활성화됩니다. 스트림이 생성될 때 사용자 제공 키가 지정되지 않은 경우 AWS 관리형 키 (Kinesis Video Streams에서 제공)가 사용됩니다.

사용자가 제공한 KMS 키는 생성 시 Kinesis 비디오 스트림에 할당해야 합니다. 나중에 [UpdateStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_UpdateStream.html) API를 사용하여 스트림에 다른 키를 할당할 수 없습니다.

다음 두 가지 방법으로 Kinesis 비디오 스트림에 사용자 제공 KMS 키를 할당할 수 있습니다.
+ 에서 Kinesis 비디오 스트림을 생성할 때 **새 비디오 스트림 생성** 페이지의 **암호화** 탭에서 KMS 키를 AWS Management Console지정합니다.
+ [CreateStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_CreateStream.html) API를 사용하여 Kinesis 비디오 스트림을 생성할 때 `KmsKeyId` 파라미터에 키 ID를 지정합니다.

## 고객 관리형 키 생성 및 사용
<a name="creating-using-sse-master-keys-akvs"></a>

이 섹션에서는 Amazon Kinesis Video Streams 키를 생성하고 사용하는 방법을 설명합니다.

### 고객 관리형 키 생성
<a name="creating-sse-master-keys-akvs"></a>

자체 키를 생성하는 방법에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [키 생성을 참조하세요](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html). 계정에 대한 키를 생성하면 Kinesis Video Streams 서비스가 **고객 관리형 키** 목록에 이러한 키를 반환합니다.

### 고객 관리형 키 사용
<a name="using-sse-master-keys-akvs"></a>

소비자, 생산자 및 관리자에게 올바른 권한을 적용한 후 자체 AWS 계정 또는 다른에서 사용자 지정 KMS 키를 사용할 수 있습니다 AWS 계정. 계정의 모든 KMS 키는 콘솔의 **고객 관리형 키** 목록에 표시됩니다.

다른 계정에 있는 사용자 지정 KMS 키를 사용하려면 해당 키를 사용할 권한이 있어야 합니다. 또한 `CreateStream` API를 사용하여 스트림을 생성해야 합니다. 콘솔에서 생성된 스트림에서는 다른 계정의 KMS 키를 사용할 수 없습니다.

**참고**  
`PutMedia` 또는 `GetMedia` 작업이 수행될 때까지 KMS 키에 액세스할 수 없습니다. 결과는 다음과 같습니다.  
지정한 키가 없으면 `CreateStream` 작업은 성공하지만 스트림의 `PutMedia` 및 `GetMedia` 작업은 실패합니다.
제공된 키(`aws/kinesisvideo`)를 사용하는 경우 첫 번째 `PutMedia` 또는 `GetMedia` 작업이 수행될 때까지 계정에 키가 표시되지 않습니다.

## 고객 관리형 키를 사용할 수 있는 권한
<a name="permissions-user-key-KMS-akvs"></a>

고객 관리형 키와 함께 서버 측 암호화를 사용하려면 먼저 스트림 암호화와 스트림 레코드 암호화 및 복호화를 허용하도록 KMS 키 정책을 구성해야 합니다. AWS KMS 권한에 대한 예제와 자세한 내용은 [AWS KMS API 권한: 작업 및 리소스 참조를 참조하세요](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html).

**참고**  
암호화에 기본 서비스 키를 사용할 때는 사용자 지정 IAM 권한을 적용할 필요가 없습니다.

고객 관리형 키를 사용하기 전에 Kinesis 비디오 스트림 생산자 및 소비자(IAM 보안 주체)가 AWS KMS 기본 키 정책의 사용자인지 확인합니다. 그렇지 않으면 스트림에서 읽기 및 쓰기가 실패하여 궁극적으로 데이터 손실, 처리 지연 또는 애플리케이션 중단이 발생할 수 있습니다. IAM 정책을 사용하여 KMS 키 권한을 관리할 수 있습니다. 자세한 내용은에서 [IAM 정책 사용을 참조하세요 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html).

### 예제 생산자 권한
<a name="example-producer-permissions-akvs"></a>

Kinesis 비디오 스트림 생산자에게 권한이 있어야 합니다`kms:GenerateDataKey`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "kms:GenerateDataKey"
        ],
        "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }, 
    {
        "Effect": "Allow",
        "Action": [
            "kinesisvideo:PutMedia"
        ],
        "Resource": "arn:aws:kinesisvideo:*:123456789012:stream/MyStream/*"
    }
  ]
}
```

------

### 소비자 권한 예
<a name="example-consumer-permissions-akvs"></a>

Kinesis 비디오 스트림 소비자는 다음과 같은 `kms:Decrypt` 권한이 있어야 합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "kms:Decrypt"
        ],
        "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }, 
    {
        "Effect": "Allow",
        "Action": [
            "kinesisvideo:GetMedia"
        ],
        "Resource": "arn:aws:kinesisvideo:*:123456789012:stream/MyStream/*"
    }
  ]
}
```

------

# 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"
        }
    ]
}
```

# 를 사용하여 Kinesis Video Streams 리소스에 대한 액세스 제어 AWS IoT
<a name="how-iot"></a>

이 섹션에서는 디바이스(예: 카메라)가 오디오 및 비디오 데이터를 하나의 특정 Kinesis 비디오 스트림으로만 전송할 수 있도록 하는 방법을 설명합니다. 자격 AWS IoT 증명 공급자와 AWS Identity and Access Management (IAM) 역할을 사용하여이 작업을 수행할 수 있습니다.

디바이스는 X.509 인증서를 사용하여 TLS 상호 인증 프로토콜을 AWS IoT 사용하여에 연결할 수 있습니다. 기타 AWS 서비스 (예: Kinesis Video Streams)는 인증서 기반 인증을 지원하지 않지만 AWS 서명 버전 4 형식의 자격 증명을 사용하여 AWS 호출할 수 있습니다. 서명 버전 4 알고리즘은 일반적으로 호출자에게 액세스 키 ID와 보안 액세스 키를 요구합니다. AWS IoT 에는 기본 제공 X.509 인증서를 고유한 디바이스 자격 증명으로 사용하여 AWS 요청(예: Kinesis Video Streams에 대한 요청)을 인증할 수 있는 자격 증명 공급자가 있습니다. 이렇게 하면 디바이스에 액세스 키 ID와 보안 액세스 키를 저장할 필요가 없습니다.

자격 증명 공급자는 X.509 인증서를 사용하여 클라이언트(이 경우 비디오 스트림으로 데이터를 전송하려는 카메라에서 실행 중인 Kinesis Video Streams SDK)를 인증하고 권한이 제한된 임시 보안 토큰을 발급합니다. 토큰을 사용하여 모든 AWS 요청에 서명하고 인증할 수 있습니다(이 경우 Kinesis Video Streams 호출). 자세한 내용은 [AWS 서비스에 대한 직접 호출 권한 부여를 참조하세요](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html).

이렇게 Kinesis Video Streams에 대한 카메라의 요청을 인증하려면 IAM 역할을 생성 및 구성하고 적절한 IAM 정책을 역할에 연결하여 AWS IoT 자격 증명 공급자가 사용자를 대신하여 역할을 수임할 수 있도록 해야 합니다.

에 대한 자세한 내용은 [AWS IoT Core 설명서를](https://docs.aws.amazon.com/iot/?id=docs_gateway) AWS IoT참조하세요. IAM 사용에 관한 자세한 내용은 [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/)를 참조하십시오.

**Topics**
+ [스트림 이름으로AWS IoT ThingName](#how-iot-thingnamestreamname)
+ [스트림 이름으로AWS IoT CertificateId](#how-iot-iotcertstreamname)
+ [자격 AWS IoT 증명을 사용하여 하드 코딩된 스트림 이름으로 스트리밍](#how-iot-hard-coded-stream)

## 스트림 이름으로AWS IoT ThingName
<a name="how-iot-thingnamestreamname"></a>

**Topics**
+ [1단계: AWS IoT 사물 유형 및 AWS IoT 사물 생성](#how-iot-create-thing-type)
+ [2단계:에서 수임할 IAM 역할 생성 AWS IoT](#how-iot-add-iot-policy)
+ [3단계: X.509 인증서 생성 및 구성](#how-iot-create-cert-keys)
+ [4단계: Kinesis 비디오 스트림으로 AWS IoT 자격 증명 테스트](#how-iot-test-it)
+ [5단계: 카메라의 파일 시스템에 AWS IoT 인증서 및 자격 증명 배포 및 비디오 스트림에 데이터 스트리밍](#how-iot-deploy)

### 1단계: AWS IoT 사물 유형 및 AWS IoT 사물 생성
<a name="how-iot-create-thing-type"></a>

에서 AWS IoT사물은 특정 디바이스 또는 논리적 개체의 표현입니다. 이 경우 AWS IoT 사물은 리소스 수준 액세스 제어를 구성하려는 Kinesis 비디오 스트림을 나타냅니다. 사물을 생성하려면 먼저 AWS IoT 사물 유형을 생성해야 합니다. AWS IoT 사물 유형을 사용하여 동일한 사물 유형과 연결된 모든 사물에 공통적인 설명 및 구성 정보를 저장할 수 있습니다.

1. 다음 예제 명령은 `kvs_example_camera` 사물 유형을 생성합니다.

   ```
   aws --profile default iot create-thing-type --thing-type-name kvs_example_camera > iot-thing-type.json
   ```

1. 이 예제 명령은 `kvs_example_camera_stream` 사물 유형의 `kvs_example_camera` 사물을 생성합니다.

   ```
   aws --profile default  iot create-thing --thing-name kvs_example_camera_stream --thing-type-name kvs_example_camera > iot-thing.json
   ```

### 2단계:에서 수임할 IAM 역할 생성 AWS IoT
<a name="how-iot-add-iot-policy"></a>

IAM 역할은 사용자와 유사합니다. 즉, 역할은 자격 AWS 증명이 할 수 있는 것과 없는 것을 결정하는 권한 정책이 있는 자격 증명입니다 AWS. 역할은 역할이 필요한 사용자라면 누구나 맡을 수 있습니다. 역할을 수임한 사람에게는 해당 역할 세션을 위한 임시 보안 자격 증명이 제공됩니다.

이 단계에서 생성하는 역할은 클라이언트로부터 자격 증명 권한 부여 요청을 수행할 때 보안 토큰 서비스(STS)에서 임시 자격 증명을 얻기 AWS IoT 위해에서 수임할 수 있습니다. 이 경우 클라이언트는 카메라에서 실행 중인 Kinesis Video Streams SDK입니다.

다음 단계를 수행하여 이 IAM 역할을 생성하고 구성합니다.

1. IAM 역할을 생성합니다.

   다음 예제 명령은 `KVSCameraCertificateBasedIAMRole`라는 IAM 역할을 생성합니다.

   ```
   aws --profile default iam create-role --role-name KVSCameraCertificateBasedIAMRole --assume-role-policy-document 'file://iam-policy-document.json' > iam-role.json
   ```

   다음 신뢰 정책 JSON을 `iam-policy-document.json`에 사용할 수 있습니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "credentials.iot.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. 그런 다음 이전에 생성한 IAM 역할에 권한 정책을 연결합니다. 이 권한 정책은 AWS 리소스에 대한 선택적 액세스 제어(지원되는 작업의 하위 집합)를 허용합니다. 이 경우 AWS 리소스는 카메라가 데이터를 전송할 비디오 스트림입니다. 다시 말해, 모든 구성 단계가 완료되면 이 카메라는 이 비디오 스트림에만 데이터를 전송할 수 있습니다.

   ```
   aws --profile default iam put-role-policy --role-name KVSCameraCertificateBasedIAMRole --policy-name KVSCameraIAMPolicy --policy-document 'file://iam-permission-document.json' 
   ```

   에 `iam-permission-document.json`대해 다음 IAM 정책 JSON을 사용할 수 있습니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "kinesisvideo:DescribeStream",
                   "kinesisvideo:PutMedia",
                   "kinesisvideo:TagStream",
                   "kinesisvideo:GetDataEndpoint"
               ],
               "Resource": "arn:aws:kinesisvideo:*:*:stream/${credentials-iot:ThingName}/*"
           }
       ]
   }
   ```

------

   이 정책은 자리 표시자에서 지정한 비디오 스트림(AWS 리소스)에서만 지정된 작업을 승인합니다`(${credentials-iot:ThingName})`. 이 자리 표시자는 자격 증명 공급자가 요청에서 비디오 스트림 이름을 전송할 `ThingName` 때 AWS IoT AWS IoT 사물 속성의 값을 사용합니다.

1. 그런 다음 IAM 역할에 대한 역할 별칭을 생성합니다. 역할 별칭은 IAM 역할을 가리키는 대체 데이터 모델입니다. AWS IoT 자격 증명 공급자 요청에는 STS에서 임시 자격 증명을 얻기 위해 수임할 IAM 역할을 나타내는 역할 별칭이 포함되어야 합니다.

   다음 샘플 명령은 `KvsCameraIoTRoleAlias`라는 역할 별칭을 생성합니다.

   ```
   aws --profile default iot create-role-alias --role-alias KvsCameraIoTRoleAlias --role-arn $(jq --raw-output '.Role.Arn' iam-role.json) --credential-duration-seconds 3600 > iot-role-alias.json
   ```

1. 이제가 역할 별칭 AWS IoT 을 사용하여 인증서로 역할을 수임할 수 있도록 하는 정책을 생성할 수 있습니다(연결되면).

   다음 샘플 명령은 AWS IoT 라는에 대한 정책을 생성합니다`KvsCameraIoTPolicy`.

   ```
   aws --profile default iot create-policy --policy-name KvsCameraIoTPolicy --policy-document 'file://iot-policy-document.json'
   ```

   다음 명령을 사용하여 `iot-policy-document.json` 문서 JSON을 생성할 수 있습니다.

   ```
   cat > iot-policy-document.json <<EOF
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "iot:AssumeRoleWithCertificate"
               ],
               "Resource": "$(jq --raw-output '.roleAliasArn' iot-role-alias.json)"
           }
       ]
   }
   EOF
   ```

### 3단계: X.509 인증서 생성 및 구성
<a name="how-iot-create-cert-keys"></a>

디바이스(비디오 스트림)와 간의 통신 AWS IoT 은 X.509 인증서를 사용하여 보호됩니다.

1.  AWS IoT 이전에 생성한에 대한 정책을 연결해야 하는 인증서를 생성합니다.

   ```
   aws --profile default iot create-keys-and-certificate --set-as-active --certificate-pem-outfile certificate.pem --public-key-outfile public.pem.key --private-key-outfile private.pem.key > certificate
   ```

1.  AWS IoT (`KvsCameraIoTPolicy`이전에 생성한)에 대한 정책을이 인증서에 연결합니다.

   ```
   aws --profile default iot attach-policy --policy-name KvsCameraIoTPolicy --target $(jq --raw-output '.certificateArn' certificate)
   ```

1. 방금 생성한 인증서에 AWS IoT 사물(`kvs_example_camera_stream`)을 연결합니다.

   ```
   aws --profile default iot attach-thing-principal --thing-name kvs_example_camera_stream --principal $(jq --raw-output '.certificateArn' certificate)
   ```

1.  AWS IoT 자격 증명 공급자를 통해 요청을 승인하려면 AWS 계정 ID에 고유한 AWS IoT 자격 증명 엔드포인트가 필요합니다. 다음 명령을 사용하여 AWS IoT 자격 증명 엔드포인트를 가져올 수 있습니다.

   ```
   aws --profile default iot describe-endpoint --endpoint-type iot:CredentialProvider --output text > iot-credential-provider.txt
   ```

1. 이전에 생성한 X.509 인증서 외에도 TLS를 통해 백엔드 서비스와 신뢰를 구축하려면 CA 인증서도 있어야 합니다. 다음 명령을 사용하여 CA 인증서를 가져올 수 있습니다.

   ```
   curl --silent 'https://www.amazontrust.com/repository/SFSRootCAG2.pem' --output cacert.pem
   ```

### 4단계: Kinesis 비디오 스트림으로 AWS IoT 자격 증명 테스트
<a name="how-iot-test-it"></a>

이제 지금까지 설정한 AWS IoT 자격 증명을 테스트할 수 있습니다.

1. 먼저, 이 구성을 테스트하려는 Kinesis 비디오 스트림을 생성합니다.
**중요**  
이전 단계()에서 생성한 AWS IoT 사물 이름과 동일한 이름으로 비디오 스트림을 생성합니다`kvs_example_camera_stream`.

   ```
   aws kinesisvideo create-stream --data-retention-in-hours 24 --stream-name kvs_example_camera_stream
   ```

1. 그런 다음 자격 AWS IoT 증명 공급자를 호출하여 임시 자격 증명을 가져옵니다.

   ```
   curl --silent -H "x-amzn-iot-thingname:kvs_example_camera_stream" --cert certificate.pem --key private.pem.key https://IOT_GET_CREDENTIAL_ENDPOINT/role-aliases/KvsCameraIoTRoleAlias/credentials --cacert ./cacert.pem > token.json
   ```
**참고**  
다음 명령을 사용하여를 가져올 수 있습니다`IOT_GET_CREDENTIAL_ENDPOINT`.  

   ```
   IOT_GET_CREDENTIAL_ENDPOINT=`cat iot-credential-provider.txt`
   ```

   출력 JSON에는 Kinesis Video Streams에 액세스하는 데 사용할 수 `sessionToken`있는 `accessKey``secretKey`, 및가 포함되어 있습니다.

1. 테스트를 위해 이러한 자격 증명을 사용하여 샘플 `kvs_example_camera_stream` 비디오 스트림에 대한 Kinesis Video Streams `DescribeStream` API를 호출할 수 있습니다.

   ```
   AWS_ACCESS_KEY_ID=$(jq --raw-output '.credentials.accessKeyId' token.json) AWS_SECRET_ACCESS_KEY=$(jq --raw-output '.credentials.secretAccessKey' token.json) AWS_SESSION_TOKEN=$(jq --raw-output '.credentials.sessionToken' token.json) aws kinesisvideo describe-stream --stream-name kvs_example_camera_stream
   ```

### 5단계: 카메라의 파일 시스템에 AWS IoT 인증서 및 자격 증명 배포 및 비디오 스트림에 데이터 스트리밍
<a name="how-iot-deploy"></a>

**참고**  
이 섹션의 단계에서는를 사용하는 카메라에서 Kinesis 비디오 스트림으로 미디어를 전송하는 방법을 설명합니다[C\$1\$1 생산자 라이브러리 사용](producer-sdk-cpp.md).

1. 이전 단계에서 생성된 X.509 인증서, 프라이빗 키 및 CA 인증서를 카메라의 파일 시스템에 복사합니다. 이러한 파일이 저장되는 경로, 역할 별칭 이름 및 `gst-launch-1.0` 명령 또는 샘플 애플리케이션을 실행하기 위한 AWS IoT 자격 증명 엔드포인트를 지정합니다.

1. 다음 샘플 명령은 AWS IoT 인증서 인증을 사용하여 Kinesis Video Streams로 비디오를 전송합니다.

   ```
   gst-launch-1.0 rtspsrc location=rtsp://YourCameraRtspUrl short-header=TRUE ! rtph264depay ! video/x-h264,format=avc,alignment=au ! h264parse ! kvssink stream-name="kvs_example_camera_stream" aws-region="YourAWSRegion" iot-certificate="iot-certificate,endpoint=credential-account-specific-prefix.credentials.iot.aws-region.amazonaws.com,cert-path=/path/to/certificate.pem,key-path=/path/to/private.pem.key,ca-path=/path/to/cacert.pem,role-aliases=KvsCameraIoTRoleAlias"
   ```

## 스트림 이름으로AWS IoT CertificateId
<a name="how-iot-iotcertstreamname"></a>

 AWS IoT 사물을 통해 디바이스(예: 카메라)를 표현하지만 다른 스트림 이름을 승인하려면 속성을 스트림 이름으로 사용하고를 AWS IoT `certificateId` 사용하여 스트림에 대한 Kinesis Video Streams 권한을 제공할 수 있습니다 AWS IoT. 이 작업을 수행하는 단계는 앞에서 설명한 단계와 비슷하며 몇 가지 변경 사항이 있습니다.
+ 다음과 같이 IAM 역할(`iam-permission-document.json`)에 대한 권한 정책을 수정합니다.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "kinesisvideo:DescribeStream",
                  "kinesisvideo:PutMedia",
                  "kinesisvideo:TagStream",
                  "kinesisvideo:GetDataEndpoint"
              ],
              "Resource": "arn:aws:kinesisvideo:*:*:stream/${credentials-iot:AwsCertificateId}/*" 
          }
      ]
  }
  ```

------
**참고**  
리소스 ARN은 인증서 ID를 스트림 이름에 대한 자리 표시자로 사용합니다. 인증서 ID를 스트림 이름으로 사용하면 IAM 권한이 작동합니다. 다음 스트림 API 호출 설명에서 스트림 이름으로 사용할 수 있도록 인증서에서 인증서 ID를 가져옵니다.  

  ```
  export CERTIFICATE_ID=`cat certificate | jq --raw-output '.certificateId'`
  ```
+ Kinesis Video Streams describe-stream CLI 명령을 사용하여 다음 변경 사항을 확인합니다.

  ```
  AWS_ACCESS_KEY_ID=$(jq --raw-output '.credentials.accessKeyId' token.json) AWS_SECRET_ACCESS_KEY=$(jq --raw-output '.credentials.secretAccessKey' token.json) AWS_SESSION_TOKEN=$(jq --raw-output '.credentials.sessionToken' token.json) aws kinesisvideo describe-stream --stream-name ${CERTIFICATE_ID}
  ```
+ certificateId를 Kinesis Video Streams C\$1\$1 SDK의 [샘플 애플리케이션의](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/samples/kvs_gstreamer_sample.cpp) AWS IoT 자격 증명 공급자에게 전달합니다.

  ```
  credential_provider = make_unique<IotCertCredentialProvider>(iot_get_credential_endpoint,
          cert_path,
          private_key_path,
          role_alias,
          ca_cert_path,
          certificateId);
  ```
**참고**  
를 자격 증명 공급`thingname`자에게 AWS IoT 전달합니다. `getenv`를 사용하여 다른 AWS IoT 속성을 전달하는 것과 마찬가지로 사물 이름을 데모 애플리케이션에 전달할 수 있습니다. 샘플 애플리케이션을 실행할 때 명령줄 파라미터의 스트림 이름으로 인증서 ID를 사용합니다.

## 자격 AWS IoT 증명을 사용하여 하드 코딩된 스트림 이름으로 스트리밍
<a name="how-iot-hard-coded-stream"></a>

 AWS IoT 사물을 통해 디바이스(예: 카메라)를 표현하지만 특정 Amazon Kinesis 비디오 스트림으로의 스트리밍을 승인하려면를 사용하여 스트림에 대한 Amazon Kinesis Video Streams 권한을 제공합니다 AWS IoT. 이 프로세스는 이전 섹션과 비슷하며 몇 가지 변경 사항이 있습니다.

다음과 같이 IAM 역할(`iam-permission-document.json`)에 대한 권한 정책을 수정합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesisvideo:DescribeStream",
                "kinesisvideo:PutMedia",
                "kinesisvideo:TagStream",
                "kinesisvideo:GetDataEndpoint"
            ],
            "Resource": "arn:aws:kinesisvideo:*:*:stream/YourStreamName/*" 
        }
    ]
}
```

------

이전 단계에서 생성된 X.509 인증서, 프라이빗 키 및 CA 인증서를 카메라의 파일 시스템에 복사합니다.

이러한 파일이 저장되는 경로, 역할 별칭 이름, AWS IoT 사물 이름 및 `gst-launch-1.0` 명령 또는 샘플 애플리케이션을 실행하기 위한 AWS IoT 자격 증명 엔드포인트를 지정합니다.

다음 샘플 명령은 AWS IoT 인증서 인증을 사용하여 Amazon Kinesis Video Streams로 비디오를 전송합니다.

```
gst-launch-1.0 rtspsrc location=rtsp://YourCameraRtspUrl short-header=TRUE ! rtph264depay ! video/x-h264,format=avc,alignment=au ! h264parse ! kvssink stream-name="YourStreamName" aws-region="YourAWSRegion" iot-certificate="iot-certificate,endpoint=credential-account-specific-prefix.credentials.iot.aws-region.amazonaws.com,cert-path=/path/to/certificate.pem,key-path=/path/to/private.pem.key,ca-path=/path/to/cacert.pem,role-aliases=KvsCameraIoTRoleAlias,iot-thing-name=YourThingName"
```

# Amazon Kinesis Video Streams의 규정 준수 검증
<a name="akda-java-compliance"></a>

 AWS 서비스 가 특정 규정 준수 프로그램의 범위 내에 있는지 알아보려면 [AWS 서비스 규정 준수 프로그램 범위 내](https://aws.amazon.com/compliance/services-in-scope/)를 참조하고 관심 있는 규정 준수 프로그램을 선택합니다. 일반 정보는 [AWS 규정 준수 프로그램](https://aws.amazon.com/compliance/programs/).

를 사용하여 타사 감사 보고서를 다운로드할 수 있습니다 AWS Artifact. 자세한 내용은 [Downloading Reports inDownloading AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)을 참조하세요.

사용 시 규정 준수 책임은 데이터의 민감도, 회사의 규정 준수 목표 및 관련 법률과 규정에 따라 AWS 서비스 결정됩니다. 사용 시 규정 준수 책임에 대한 자세한 내용은 [AWS 보안 설명서를](https://docs.aws.amazon.com/security/) AWS 서비스참조하세요.

# Amazon Kinesis Video Streams의 복원력
<a name="disaster-recovery-resiliency"></a>

 AWS 글로벌 인프라는 AWS 리전 및 가용 영역을 중심으로 구축됩니다. AWS 리전은 물리적으로 분리되고 격리된 여러 가용 영역을 제공하며,이 가용 영역은 지연 시간이 짧고 처리량이 높으며 중복성이 높은 네트워킹과 연결됩니다. 가용 영역을 사용하면 중단 없이 가용 영역 간에 자동으로 장애 조치가 이루어지는 애플리케이션 및 데이터베이스를 설계하고 운영할 수 있습니다. 가용 영역은 기존의 단일 또는 복수 데이터 센터 인프라보다 가용성, 내결함성, 확장성이 뛰어납니다.

 AWS 리전 및 가용 영역에 대한 자세한 내용은 [AWS 글로벌 인프라를](https://aws.amazon.com/about-aws/global-infrastructure/) 참조하세요.

# Kinesis Video Streams의 인프라 보안
<a name="infrastructure-security"></a>

관리형 서비스인 Amazon Kinesis Video Streams는 [Amazon Web Services: 보안 프로세스 개요](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf) 백서에 설명된 AWS 글로벌 네트워크 보안 절차로 보호됩니다.

 AWS 에서 게시한 API 호출을 사용하여 네트워크를 통해 Kinesis Video Streams에 액세스합니다. 클라이언트가 전송 계층 보안(TLS) 1.2 이상을 지원해야 합니다. 클라이언트는 Ephemeral Diffie-Hellman(DHE) 또는 Elliptic Curve Ephemeral Diffie-Hellman(ECDHE)과 같은 완전 전송 보안(PFS)이 포함된 암호 제품군도 지원해야 합니다. Java 7 이상의 최신 시스템은 대부분 이러한 모드를 지원합니다.

또한 액세스 키 ID와 IAM 보안 주체와 연결된 보안 액세스 키를 사용하여 요청에 서명해야 합니다. 또는 [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html)(AWS STS)를 사용하여 임시 보안 자격 증명을 생성하여 요청에 서명할 수 있습니다.

# Kinesis Video Streams의 보안 모범 사례
<a name="security-best-practices"></a>

Amazon Kinesis Video Streams는 자체 보안 정책을 개발하고 구현할 때 고려해야 할 여러 보안 기능을 제공합니다. 다음 모범 사례는 일반적인 지침이며 완벽한 보안 솔루션을 나타내지는 않습니다. 이러한 모범 사례는 사용자의 환경에 적절하지 않거나 충분하지 않을 수 있으므로 규정이 아닌 참고용으로만 사용하세요.

원격 디바이스의 보안 모범 사례를 보려면 [디바이스 에이전트의 보안 모범 사례](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-DetectMetricsMessagesBestPract.html)를 참조하세요.

## 최소 권한 액세스 구현
<a name="security-best-practices-privileges"></a>

권한을 부여할 때 누가 어떤 권한을 어떤 Kinesis Video Streams 리소스에 부여할지 결정합니다. 해당 리소스에서 허용할 작업을 사용 설정합니다. 따라서 작업을 수행하는 데 필요한 권한만 부여해야 합니다. 최소 권한 액세스를 구현하는 것이 오류 또는 악의적인 의도로 인해 발생할 수 있는 보안 위험과 영향을 최소화할 수 있는 근본적인 방법입니다.

예를 들어, Kinesis Video Streams에 데이터를 전송하는 생산자에게는 `PutMedia`, `GetStreamingEndpoint` 및 `DescribeStream`만 필요합니다. 생산자 애플리케이션에 모든 작업(`*`) 또는 `GetMedia` 등의 다른 작업에 대한 사용 권한을 부여하지 마세요.

자세한 내용은 [What Is Least Privilege & Why Do You Need It?](https://www.beyondtrust.com/blog/entry/what-is-least-privilege)을 참조하세요.

## IAM 역할 사용
<a name="security-best-practices-roles"></a>

Kinesis Video Streams에 액세스하려면 생산자 및 클라이언트 애플리케이션에 유효한 자격 증명이 있어야 합니다. AWS 보안 인증을 클라이언트 애플리케이션이나 Amazon S3 버킷에 직접 저장하면 안 됩니다. 이는 자동으로 교체되지 않는 장기 자격 증명으로, 손상된 경우 비즈니스에 상당한 영향을 미칠 수 있습니다.

대신 IAM 역할을 사용하여 생산자 및 클라이언트 애플리케이션이 Kinesis Video Streams에 액세스할 수 있는 임시 자격 증명을 관리해야 합니다. 역할을 사용하는 경우 다른 리소스에 액세스하기 위해 장기 자격 증명(예: 사용자 이름 및 암호 또는 액세스 키)을 사용할 필요가 없습니다.

자세한 설명은 *IAM 사용자 가이드*에서 다음 주제를 참조하세요:
+ [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)
+ [역할에 대한 일반적인 시나리오: 사용자, 애플리케이션 및 서비스](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios.html)

## CloudTrail을 사용하여 API 직접 호출 모니터링
<a name="security-best-practices-cloudtrail"></a>

Kinesis Video Streams는 Kinesis Video Streams AWS 서비스 에서 사용자 AWS CloudTrail, 역할 또는가 수행한 작업에 대한 레코드를 제공하는 서비스와 함께 작동합니다.

CloudTrail에서 수집한 정보를 사용하여 Kinesis Video Streams에 수행된 요청, 요청이 수행된 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정보를 확인할 수 있습니다.

자세한 내용은 [를 사용하여 Amazon Kinesis Video Streams API 호출 로깅 AWS CloudTrail](monitoring-cloudtrail.md) 단원을 참조하십시오.