

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

# IAM을 사용하여 Amazon Kinesis Data Streams 리소스에 대한 액세스 제어
<a name="controlling-access"></a>

AWS Identity and Access Management (IAM)를 사용하면 다음을 수행할 수 있습니다.
+  AWS 계정에서 사용자 및 그룹 생성
+  AWS 계정의 각 사용자에게 고유한 보안 자격 증명 할당
+  AWS 리소스를 사용하여 작업을 수행할 수 있는 각 사용자의 권한 제어
+ 다른 AWS 계정의 사용자가 AWS 리소스를 공유하도록 허용
+  AWS 계정에 대한 역할을 생성하고 해당 역할을 수임할 수 있는 사용자 또는 서비스를 정의합니다.
+ 엔터프라이즈의 기존 자격 증명을 사용하여 AWS 리소스를 사용하여 작업을 수행할 수 있는 권한 부여

IAM과 Kinesis Data Streams를 함께 사용하면 조직 내 사용자별로 특정 Kinesis Data Streams API 작업을 사용하여 작업을 수행할 수 있는지 여부와 특정 AWS 리소스를 사용할 수 있는지 여부를 제어할 수 있습니다.

Kinesis Client Library(KCL)를 사용하여 애플리케이션을 개발하는 경우 정책에 Amazon DynamoDB 및 Amazon CloudWatch에 대한 권한이 포함되어 있어야 합니다. KCL은 DynamoDB를 사용하여 애플리케이션에 대한 상태 정보를 추적하고, CloudWatch를 사용하여 사용자 대신 KCL 지표를 CloudWatch에 전송합니다. KCL에 대한 자세한 내용은 [KCL 1.x 소비자 개발](developing-consumers-with-kcl.md) 단원을 참조하십시오.

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/)

IAM 및 Amazon DynamoDB에 대한 자세한 내용은 **Amazon DynamoDB 개발자 안내서의 [Using IAM to Control Access to Amazon DynamoDB Resources](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/UsingIAMWithDDB.html)를 참조하세요.

IAM 및 Amazon CloudWatch에 대한 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [AWS 계정에 대한 사용자 액세스 제어를 참조하세요](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/UsingIAM.html).

**Topics**
+ [정책 구문](#policy-syntax)
+ [Kinesis Data Streams에 대한 작업](#kinesis-using-iam-actions)
+ [Kinesis Data Streams용 Amazon 리소스 이름(ARN)](#kinesis-using-iam-arn-format)
+ [Kinesis Data Streams에 대한 예제 정책](#kinesis-using-iam-examples)
+ [다른 계정과 데이터 스트림 공유](#sharing-data-streams)
+ [다른 계정의 Kinesis Data Streams에서 읽도록 AWS Lambda 함수 구성](#sharing-data-streams-example)
+ [리소스 기반 정책을 사용하여 액세스 공유](resource-based-policy-examples.md)

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

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

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

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

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 Data Streams에 대한 작업
<a name="kinesis-using-iam-actions"></a>

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

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

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

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

```
"Action": "kinesis:Get*"
```

모든 Kinesis Data Streams 작업을 지정하려면 다음과 같이 \$1 와일드카드를 사용하세요.

```
"Action": "kinesis:*"
```

Kinesis Data Streams API 작업의 전체 목록은 [Amazon Kinesis API 참조](https://docs.aws.amazon.com/kinesis/latest/APIReference/)를 확인하세요.

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

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

Kinesis 데이터 스트림에는 다음 ARN 리소스 형식을 사용합니다.

```
arn:aws:kinesis:region:account-id:stream/stream-name
```

예제:

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

## Kinesis Data Streams에 대한 예제 정책
<a name="kinesis-using-iam-examples"></a>

다음은 Kinesis 데이터 스트림에 대한 사용자 액세스를 제어하는 방법을 설명하는 예제 정책입니다.

------
#### [ Example 1: Allow users to get data from a stream ]

**Example**  
 이 정책을 사용하면 사용자 또는 그룹이 지정된 스트림에 대해 `DescribeStreamSummary`, `GetShardIterator` 및 `GetRecords`를 수행할 수 있으며 모든 스트림에 대해 `ListStreams`를 수행할 수 있습니다. 이 정책은 특정 스트림에서 데이터를 가져올 수 있는 사용자에 적용할 수 있습니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:Get*",
                "kinesis:DescribeStreamSummary"
            ],
            "Resource": [
            "arn:aws:kinesis:us-east-1:111122223333:stream/stream1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:ListStreams"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------
#### [ Example 2: Allow users to add data to any stream in the account ]

**Example**  
이 정책을 사용하면 사용자 또는 그룹이 계정의 스트림에 `PutRecord` 작업을 사용할 수 있습니다. 이 정책은 계정의 모든 스트림에 데이터 레코드를 추가할 수 있는 사용자에 적용할 수 있습니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:PutRecord"
            ],
            "Resource": [
                "arn:aws:kinesis:us-east-1:111122223333:stream/*"
            ]
        }
    ]
}
```

------
#### [ Example 3: Allow any Kinesis Data Streams action on a specific stream ]

**Example**  
이 정책을 사용하면 사용자 또는 그룹이 지정된 스트림에 대해 Kinesis Data Streams 작업을 사용할 수 있습니다. 이 정책은 특정 스트림에 대해 관리 제어 권한이 있는 사용자에 적용할 수 있습니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": [
            "arn:aws:kinesis:us-east-1:111122223333:stream/stream1"
            ]
        }
    ]
}
```

------
#### [ Example 4: Allow any Kinesis Data Streams action on any stream ]

**Example**  
이 정책을 사용하면 사용자 또는 그룹이 계정의 모든 스트림에 대해 Kinesis Data Streams 작업을 사용할 수 있습니다. 이 정책은 모든 스트림에 대한 모든 액세스 권한을 부여하므로 관리자에게만 해당하도록 제한해야 합니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": [
                "arn:aws:kinesis:*:111122223333:stream/*"
            ]
        }
    ]
}
```

------

## 다른 계정과 데이터 스트림 공유
<a name="sharing-data-streams"></a>

**참고**  
 Kinesis Producer Library에서는 현재 데이터 스트림에 쓸 때 스트림 ARN 지정을 지원하지 않습니다. 교차 계정 데이터 스트림에 쓰려면 AWS SDK를 사용합니다.

[리소스 기반 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based)을 데이터 스트림에 연결하여 다른 계정, IAM 사용자 또는 IAM 역할에 액세스 권한을 부여합니다. 리소스 기반 정책은 데이터 스트림과 같은 리소스에 연결하는 JSON 정책 문서입니다. 이 정책은 [지정된 보안 주체](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)에 해당 리소스에 대한 특정 작업을 수행할 수 있는 권한을 부여하고 이 권한이 적용되는 조건을 정의합니다. 정책에는 여러 명령문이 있을 수 있습니다. 리소스 기반 정책에서 보안 주체를 지정해야 합니다. 보안 주체에는 계정, 사용자, 역할, 페더레이션 사용자 또는 AWS 서비스가 포함될 수 있습니다. Kinesis Data Streams 콘솔, API 또는 SDK에서 정책을 구성할 수 있습니다.

[향상된 팬아웃](https://docs.aws.amazon.com/streams/latest/dev/enhanced-consumers.html)과 같은 등록된 소비자와에 대한 액세스를 공유하려면 데이터 스트림 ARN 및 소비자 ARN 모두에 정책이 필요합니다.

### 교차 계정 액세스 활성화
<a name="sharing-data-streams-enabling"></a>

교차 계정 액세스를 활성화하려는 경우, 전체 계정이나 다른 계정의 IAM 엔터티를 리소스 기반 정책의 위탁자로 지정할 수 있습니다. 리소스 기반 정책에 교차 계정 위탁자를 추가하는 것은 트러스트 관계 설정의 절반밖에 되지 않는다는 것을 유념하세요. 보안 주체와 리소스가 별도의 AWS 계정에 있는 경우 자격 증명 기반 정책을 사용하여 보안 주체에게 리소스에 대한 액세스 권한을 부여해야 합니다. 하지만 리소스 기반 정책이 동일 계정의 위탁자에 액세스를 부여하는 경우 추가 자격 증명 기반 정책이 필요하지 않습니다.

크로스 계정 액세스에 대해 리소스 기반 정책을 사용하는 방법에 대한 자세한 내용은 [IAM에서 크로스 계정 리소스 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)를 참조하세요.

데이터 스트림 관리자는 AWS Identity and Access Management 정책을 사용하여 누가 무엇에 액세스할 수 있는지 지정할 수 있습니다. 즉, 어떤 *보안 주체*가 어떤 *리소스*와 어떤 *조건*에서 *작업*을 수행할 수 있는지를 지정할 수 있습니다. JSON 정책의 `Action`요소는 정책에서 액세스를 허용하거나 거부하는 데 사용할 수 있는 작업을 설명합니다. 정책 작업은 일반적으로 연결된 AWS API 작업과 이름이 동일합니다.

공유할 수 있는 Kinesis Data Streams 작업:


| 작업 | 액세스 수준 | 
| --- | --- | 
| [DescribeStreamConsumer](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStreamConsumer.html) | 소비자 | 
| [DescribeStreamSummary](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStreamSummary.html) | 데이터 스트림 | 
| [GetRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html) | 데이터 스트림 | 
| [GetShardIterator](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html) | 데이터 스트림 | 
| [ListShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html) | 데이터 스트림 | 
| [PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html) | 데이터 스트림 | 
| [PutRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html) | 데이터 스트림 | 
| [SubscribeToShard](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_SubscribeToShard.html) | 소비자 | 

다음은 리소스 기반 정책을 사용하여 데이터 스트림 또는 등록된 소비자에게 크로스 계정 액세스 권한을 부여하는 예제입니다.

크로스 계정 작업을 수행하려면 데이터 스트림 액세스를 위한 스트림 ARN과 등록된 소비자 액세스를 위한 소비자 ARN을 지정해야 합니다.

### Kinesis Data Streams에 대한 리소스 기반 정책 예제
<a name="kinesis-stream-sharing-iam-examples"></a>

등록된 소비자를 공유하려면 필요한 조치 때문에 데이터 스트림 정책과 소비자 정책이 모두 포함됩니다.

**참고**  
다음은 `Principal`에 대한 유효한 값의 예제입니다.  
`{"AWS": "123456789012"}`
IAM 사용자 – `{"AWS": "arn:aws:iam::123456789012:user/user-name"}`
IAM 역할 – `{"AWS":["arn:aws:iam::123456789012:role/role-name"]}`
여러 보안 주체(계정, 사용자, 역할의 조합일 수 있음) - `{"AWS":["123456789012", "123456789013", "arn:aws:iam::123456789012:user/user-name"]}`

------
#### [ Example 1: Write access to the data stream ]

**Example**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "__default_write_policy_ID",
    "Statement": [
        {
            "Sid": "writestatement",
            "Effect": "Allow",
            "Principal": {
                "AWS": "Account12345"
            },
            "Action": [
                "kinesis:DescribeStreamSummary",
                "kinesis:ListShards",
                "kinesis:PutRecord",
                "kinesis:PutRecords"
            ],
            "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC"
        }
    ]
}
```

------
#### [ Example 2: Read access to the data stream ]

**Example**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "__default_sharedthroughput_read_policy_ID",
    "Statement": [
        {
            "Sid": "sharedthroughputreadstatement",
            "Effect": "Allow",
            "Principal": {
                "AWS": "Account12345"
            },
            "Action": [                
                "kinesis:DescribeStreamSummary",
                "kinesis:ListShards",
                "kinesis:GetRecords",
                "kinesis:GetShardIterator"
            ],
            "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC"
        }
    ]
}
```

------
#### [ Example 3: Share enhanced fan-out read access to a registered consumer ]

**Example**  
데이터 스트림 정책 명령문:     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "__default_sharedthroughput_read_policy_ID",
    "Statement": [
        {
            "Sid": "consumerreadstatement",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/role-name"
            },
            "Action": [
                "kinesis:DescribeStreamSummary",
                "kinesis:ListShards"
            ],
            "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC"
        }
    ]
}
```
소비자 정책 명령문:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "__default_efo_read_policy_ID",
    "Statement": [
        {
            "Sid": "eforeadstatement",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/role-name"
            },
            "Action": [
                "kinesis:DescribeStreamConsumer",
                "kinesis:SubscribeToShard"
            ],
            "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC/consumer/consumerDEF:1674696300"
        }
    ]
}
```
최소 권한 원칙을 유지하기 위해 작업 또는 보안 주체 필드에서는 와일드카드(\$1)가 지원되지 않습니다.

------

### 프로그래밍 방식으로 데이터 스트림에 대한 정책 관리
<a name="sharing-data-streams-managing-policy"></a>

외부에서 AWS Management Console Kinesis Data Streams에는 데이터 스트림 정책을 관리하기 위한 세 가지 APIS가 있습니다.
+ [PutResourcePolicy](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutResourcePolicy.html)
+ [GetResourcePolicy](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetResourcePolicy.html)
+ [DeleteResourcePolicy](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DeleteResourcePolicy.html)

데이터 스트림 또는 소비자에 대한 정책을 연결하거나 덮어쓰려면 `PutResourePolicy`를 사용합니다. 지정된 데이터 스트림 또는 소비자에 대한 정책을 확인하고 조회하려면 `GetResourcePolicy`를 사용합니다. 지정된 데이터 스트림 또는 소비자에 대한 정책을 삭제하려면 `DeleteResourcePolicy`를 사용합니다.

### 정책 제한
<a name="sharing-data-streams-validating"></a>

Kinesis Data Streams 리소스 정책에는 다음과 같은 제한이 있습니다.
+ 와일드카드(\$1)는 데이터 스트림 또는 등록된 소비자에 직접 연결된 리소스 정책을 통해 광범위한 액세스 권한이 부여되는 것을 방지하기 위해 지원되지 않습니다. 또한 다음 정책을 주의 깊게 검토하여 광범위한 액세스를 허용하지 않는지 확인하세요.
  + 연결된 AWS 보안 주체에 연결된 자격 증명 기반 정책(예: IAM 역할)
  + 연결된 리소스에 연결된 AWS 리소스 기반 정책(예: AWS Key Management Service KMS 키)
+ AWS 서비스 보안 주체는 잠재적인 [혼동된 대리자를](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) 방지하기 위해 보안 주체에 대해 지원되지 않습니다.
+ 페더레이션 보안 주체는 지원되지 않습니다.
+ 정식 사용자 ID는 지원되지 않습니다.
+ 정책 크기는 20KB를 초과할 수 없습니다.

### 암호화된 데이터에 대한 액세스 공유
<a name="sharing-access-to-encrypted-data-1"></a>

 AWS 관리형 KMS 키를 사용하여 데이터 스트림에 대해 서버 측 암호화를 활성화하고 리소스 정책을 통해 액세스를 공유하려는 경우 고객 관리형 키(CMK) 사용으로 전환해야 합니다. 자세한 내용은 [Kinesis Data Streams용 서버 측 암호화란?](what-is-sse.md) 단원을 참조하십시오. 또한 KMS 크로스 계정 공유 기능을 사용하여 공유 보안 주체 엔터티가 CMK에 액세스할 수 있도록 허용해야 합니다. 공유 보안 주체 엔터티에 대한 IAM 정책도 변경해야 합니다. 자세한 내용은 [다른 계정의 사용자가 KMS 키를 사용하도록 허용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)을 참조하세요.

## 다른 계정의 Kinesis Data Streams에서 읽도록 AWS Lambda 함수 구성
<a name="sharing-data-streams-example"></a>

다른 계정의 Kinesis Data Streams에서 읽도록 Lambda 함수를 구성하는 방법에 대한 예는 [교차 계정 AWS Lambda 함수와 액세스 공유](resource-based-policy-examples.md#Resource-based-policy-examples-lambda) 섹션을 참조하세요.

# 리소스 기반 정책을 사용하여 액세스 공유
<a name="resource-based-policy-examples"></a>

**참고**  
기존 리소스 기반 정책을 업데이트하면 기존 정책을 교체하므로, 새 정책에 필요한 모든 정보를 포함해야 합니다.

## 교차 계정 AWS Lambda 함수와 액세스 공유
<a name="Resource-based-policy-examples-lambda"></a>

**Lambda 연산자**

1. [IAM 콘솔](https://console.aws.amazon.com/iam/)로 이동하여 AWS Lambda 함수의 [Lambda 실행 역할로 사용할 IAM 역할을](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) 생성합니다. 필수 Kinesis Data Streams 및 Lambda 간접 호출 권한을 가지는 관리형 IAM 정책 `AWSLambdaKinesisExecutionRole`을 추가합니다. 또한 이 정책은 액세스 권한이 있는 모든 잠재적 Kinesis Data Streams 리소스에 대한 액세스 권한을 부여합니다.

1. [AWS Lambda 콘솔](https://console.aws.amazon.com/lambda/home)에서 Kinesis Data Streams 데이터 스트림의 레코드를 처리하는 AWS Lambda 함수를 생성하고 실행 역할을 설정하는 동안 이전 단계에서 생성한 역할을 선택합니다. [https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html) 

1. 리소스 정책 구성을 위해 Kinesis Data Streams 리소스 소유자에게 실행 역할을 제공합니다.

1. Lambda 함수 설정을 마칩니다.

**Kinesis Data Streams 리소스 소유자**

1. Lambda 함수를 간접 호출할 크로스 계정 Lambda 실행 역할을 가져옵니다.

1. =Amazon Kinesis Data Streams 콘솔에서 데이터 스트림을 선택합니다. **데이터 스트림 공유** 탭을 선택하고 **공유 정책 생성** 버튼을 선택하여 시각적 정책 편집기를 시작합니다. 데이터 스트림 내에서 등록된 소비자를 공유하려면 소비자를 선택하고 **공유 정책 생성**을 선택합니다. JSON 정책을 직접 작성할 수도 있습니다.

1. 크로스 계정 Lambda 실행 역할을 보안 주체로 지정하고 액세스를 공유하는 정확한 Kinesis Data Streams 작업을 지정합니다. `kinesis:DescribeStream` 작업도 포함해야 합니다. Kinesis Data Streams의 리소스 정책 예제에 대한 자세한 내용은 [Kinesis Data Streams에 대한 리소스 기반 정책 예제](controlling-access.md#kinesis-stream-sharing-iam-examples) 섹션을 참조하세요.

1. **정책 생성**을 선택하거나 [PutResourcePolicy](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutResourcePolicy.html)를 사용하여 정책을 리소스에 연결합니다.

## 교차 계정 KCL 소비자와 액세스 공유
<a name="Resource-based-policy-examples-kcl-consumers"></a>
+ KCL 1.x를 사용하는 경우 KCL 1.15.0 이상을 사용하는지 확인합니다.
+ KCL 2.x를 사용하는 경우 KCL 2.5.3 이상을 사용하는지 확인합니다.

**KCL 연산자**

1. KCL 애플리케이션을 실행할 IAM 사용자 또는 IAM 역할을 리소스 소유자에게 제공합니다.

1. 리소스 소유자에게 데이터 스트림 또는 소비자 ARN을 요청합니다.

1. 제공된 스트림 ARN을 KCL 구성의 일부로 지정해야 합니다.
   + KCL 1.x의 경우: [KinesisClientLibConfiguration](https://github.com/awslabs/amazon-kinesis-client/blob/v1.x/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibConfiguration.java#L738-L821) 생성자를 사용하고 스트림 ARN을 제공합니다.
   + KCL 2.x의 경우: Kinesis Client Library [ConfigsBuilder](https://github.com/awslabs/amazon-kinesis-client/blob/master/amazon-kinesis-client/src/main/java/software/amazon/kinesis/common/ConfigsBuilder.java#L155-L176)에 스트림 ARN 또는 [StreamTracker](https://github.com/awslabs/amazon-kinesis-client/blob/master/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/StreamTracker.java)만 제공할 수 있습니다. StreamTracker의 경우 라이브러리에서 생성한 DynamoDB 리스 테이블에서 스트림 ARN 및 생성 Epoch를 제공합니다. 향상된 팬아웃과 같은 등록된 공유 소비자의 데이터를 읽으려면 StreamTracker를 사용하고 소비자 ARN도 제공합니다.

**Kinesis Data Streams 리소스 소유자**

1. KCL 애플리케이션을 실행할 크로스 계정 IAM 사용자 또는 IAM 역할을 가져옵니다.

1. =Amazon Kinesis Data Streams 콘솔에서 데이터 스트림을 선택합니다. **데이터 스트림 공유** 탭을 선택하고 **공유 정책 생성** 버튼을 선택하여 시각적 정책 편집기를 시작합니다. 데이터 스트림 내에서 등록된 소비자를 공유하려면 소비자를 선택하고 **공유 정책 생성**을 선택합니다. JSON 정책을 직접 작성할 수도 있습니다.

1. 크로스 계정 KCL 애플리케이션의 IAM 사용자 또는 IAM 역할을 보안 주체로 지정하고 액세스를 공유하는 정확한 Kinesis Data Streams 작업을 지정합니다. Kinesis Data Streams의 리소스 정책 예제에 대한 자세한 내용은 [Kinesis Data Streams에 대한 리소스 기반 정책 예제](controlling-access.md#kinesis-stream-sharing-iam-examples) 섹션을 참조하세요.

1. **정책 생성**을 선택하거나 [PutResourcePolicy](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutResourcePolicy.html)를 사용하여 정책을 리소스에 연결합니다.

## 암호화된 데이터에 대한 액세스 공유
<a name="sharing-access-to-encrypted-data"></a>

 AWS 관리형 KMS 키를 사용하여 데이터 스트림에 대해 서버 측 암호화를 활성화하고 리소스 정책을 통해 액세스를 공유하려는 경우 고객 관리형 키(CMK) 사용으로 전환해야 합니다. 자세한 내용은 [Kinesis Data Streams용 서버 측 암호화란?](what-is-sse.md) 단원을 참조하십시오. 또한 KMS 크로스 계정 공유 기능을 사용하여 공유 보안 주체 엔터티가 CMK에 액세스할 수 있도록 허용해야 합니다. 공유 보안 주체 엔터티에 대한 IAM 정책도 변경해야 합니다. 자세한 내용은 [다른 계정의 사용자가 KMS 키를 사용하도록 허용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)을 참조하세요.