

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# IAM ユーザーとポリシーを作成する
<a name="tutorial-stock-data-kplkcl-iam"></a>

のセキュリティのベストプラクティス AWS により、きめ細かなアクセス許可を使用してさまざまなリソースへのアクセスを制御できます。 AWS Identity and Access Management (IAM) を使用すると、 でユーザーとユーザーのアクセス許可を管理できます AWS。[IAM ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html)は、許可されるアクションとそのアクションが適用されるリソースを明示的にリストアップします。

一般的に、Kinesis Data Streams プロデューサーおよびコンシューマーには、次の最小許可が必要になります。


**プロデューサー**  

| アクション | [リソース]  | 目的 | 
| --- | --- | --- | 
| DescribeStream, DescribeStreamSummary, DescribeStreamConsumer | Kinesis Data Streams | レコードを書き込む前に、プロデューサーは、ストリームが存在し、アクティブであること、シャードがストリームに含まれていること、およびストリームにコンシューマーがあることを確認します。 | 
| SubscribeToShard, RegisterStreamConsumer | Kinesis Data Streams | Kinesis Data Stream シャードにサブスクライブし、コンシューマーを登録します。 | 
| PutRecord, PutRecords | Kinesis Data Streams | Amazon Kinesis ストリームにレコードを書き込みます｡ | 


**コンシューマー**  

| **アクション** | **[リソース]**  | **目的** | 
| --- | --- | --- | 
| DescribeStream | Kinesis Data Streams | レコードを読み取る前に、コンシューマーは、ストリームが存在し、アクティブであることを確認し、ストリームにシャードが含まれることを確認します。 | 
| GetRecords, GetShardIterator  | Kinesis Data Streams | Kinesis Data Streams シャードからレコードを読み込みます。 | 
| CreateTable, DescribeTable, GetItem, PutItem, Scan, UpdateItem | Amazon DynamoDB テーブル | Kinesis クライアントライブラリ (KCL) を使用してコンシューマーが開発されている場合は、アプリケーションの処理状態を追跡するときに DynamoDB テーブルへの許可が必要です。テーブルは、最初に開始したコンシューマーによって作成されます。 | 
| DeleteItem | Amazon DynamoDB テーブル | コンシューマーが Kinesis Data Streams シャードで分割と結合のオペレーションを実行する場合。 | 
| PutMetricData | Amazon CloudWatch Logs | また、KCL は、アプリケーションをモニタリングするのに便利なメトリクスも CloudWatch にアップロードします。 | 

このアプリケーションでは、前述のすべての許可を付与する単一の IAM ポリシーを作成します。実際には、プロデューサーとコンシューマーに 1 つずつ、2 つのポリシーを作成することになるかもしれません。

**IAM ポリシーを作成するには**

1. 新しいストリームの Amazon リソースネーム (ARN) を見つけます。この ARN は、 [**ストリーム ARN**] として [**詳細**]タブの上部に表示されます。ARN 形式 は次のとおりです。

   ```
   arn:aws:kinesis:region:account:stream/name
   ```  
*リージョン*  
リージョンコード (`us-west-2` など)。詳細については、[リージョンとアベイラビリティーゾーンの概念](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-regions-availability-zones)を参照してください。  
*アカウント*  
 AWS アカウント[設定](https://console.aws.amazon.com/billing/home?#/account)に示されているアカウント ID。  
*名前*  
[データストリームを作成する](tutorial-stock-data-kplkcl-create-stream.md) からのストリームの名前 (`StockTradeStream`)。

1. コンシューマーによって使用される (最初のコンシューマーインスタンスによって作成された) DynamoDB テーブルの ARN を決定します。次のような形式になります。

   ```
   arn:aws:dynamodb:region:account:table/name
   ```

   リージョンとアカウントは前のステップと同じ場所のものですが、この場合の*名前*はコンシューマーアプリケーションによって作成および使用されるテーブルの名前となります。コンシューマーによって使用される KCL では、アプリケーション名がテーブル名として使用されます。後で使用されるアプリケーション名である `StockTradesProcessor` を使用します。

1. IAM コンソールの**ポリシー** ([https://console.aws.amazon.com/iam/home\$1policies](https://console.aws.amazon.com/iam/home#policies)) で、[**ポリシーの作成**] を選択します。IAM ポリシーを初めて扱う場合には、[**今すぐ始める**]、[**ポリシーの作成**] を選択します。

1. [**ポリシージェネレーター**] の横の [**選択**] を選択します。

1.  AWS サービスとして **Amazon Kinesis** を選択します。

1. 許可されるアクションとして、`DescribeStream`、`GetShardIterator`、`GetRecords`、`PutRecord`、および `PutRecords` を選択します。

1. ステップ 1 で作成した ARN を入力します。

1. 以下の各項目について、[**ステートメントを追加**] を使用します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/streams/latest/dev/tutorial-stock-data-kplkcl-iam.html)

   ARN を指定するときに使用されるアスタリスク (`*`) は必要ありません。`PutMetricData` アクションが呼び出される特定のリソースが CloudWatch に存在しない場合などがこれに該当します。

1. ［**Next Step**］ (次のステップ) をクリックします。

1. [**ポリシー名**] を `StockTradeStreamPolicy` に変更し、コードを確認して、[**ポリシーの作成**] を選択します。

取得されたポリシードキュメントには、次のような結果が表示されます

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt123",
            "Effect": "Allow",
            "Action": [
                "kinesis:DescribeStream",
                "kinesis:PutRecord",
                "kinesis:PutRecords",
                "kinesis:GetShardIterator",
                "kinesis:GetRecords",
                "kinesis:ListShards",
                "kinesis:DescribeStreamSummary",
                "kinesis:RegisterStreamConsumer"
            ],
            "Resource": [
                "arn:aws:kinesis:us-west-2:111122223333:stream/StockTradeStream"
            ]
        },
        {
            "Sid": "Stmt234",
            "Effect": "Allow",
            "Action": [
                "kinesis:SubscribeToShard",
                "kinesis:DescribeStreamConsumer"
            ],
            "Resource": [
                "arn:aws:kinesis:us-west-2:111122223333:stream/StockTradeStream/*"
            ]
        },
        {
            "Sid": "Stmt456",
            "Effect": "Allow",
            "Action": [
                "dynamodb:*"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:111122223333:table/StockTradesProcessor"
            ]
        },
        {
            "Sid": "Stmt789",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

**IAM ユーザーを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. **[Users]** (ユーザー) ページで、**[Add user]** (ユーザーを追加) を選択します。

1. [**User name**] に、`StockTradeStreamUser` と入力します。

1. [**アクセスの種類**] で、[**プログラムによるアクセス**] を選択し、[**次の手順: アクセス許可**] を選択します。

1. **[Attach existing policies directly (既存のポリシーを直接アタッチする)**] を選択します。

1. 作成したポリシーの名前で検索します。ポリシー名の左にあるボックスを選択し、[**次の手順: 確認**] を選択します。

1. 詳細と概要を確認し、[**ユーザーの作成**] を選択します。

1. [**アクセスキー ID**] をコピーし、プライベート用に保存します。[**シークレットアクセスキー**] で [**表示**] を選択し、このキーもプライベートに保存します。

1. アクセスキーとシークレットキーを自分しかアクセスできない安全な場所にあるローカルファイルに貼り付けます。このアプリケーションでは、アクセス権限を厳しく制限した ` ~/.aws/credentials` という名前のファイルを作成します。ファイル形式は次のようになります。

   ```
   [default]
   aws_access_key_id=access key
   aws_secret_access_key=secret access key
   ```

**IAM ポリシーをユーザーにアタッチするには**

1. IAM コンソールで、[[ポリシー](https://console.aws.amazon.com/iam/home?#policies)] を開いて [**ポリシーアクション**] を選択します。

1. [`StockTradeStreamPolicy`] および [**アタッチ**] を選択します。

1. [`StockTradeStreamUser`] および [**ポリシーのアタッチ**] を選択します。

## 次のステップ
<a name="tutorial-stock-data-kplkcl-iam-next"></a>

[実装コードをダウンロードおよびビルドする](tutorial-stock-data-kplkcl-download.md)