

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

# IAM ユーザーとポリシーを作成する
<a name="tutorial-stock-data-kplkcl2-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 | コンシューマーをシャードにサブスクライブして登録します。 | 
| PutRecord, PutRecords | Kinesis Data Streams | Kinesis Data Streams にレコードを書き込みます。 | 


**コンシューマー**  

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

このチュートリアルでは、上記のすべての許可を付与する 1 つの IAM ポリシーを作成します。本番環境では、プロデューサー用とコンシューマー用の 2 つのポリシーを作成してもかまいません。

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

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

   ```
   arn:aws:kinesis:region:account:stream/name
   ```  
*リージョン*  
 AWS リージョンコード。例: `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。  
*名前*  
上記のステップで作成したデータストリームの名前 (`StockTradeStream`)。

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

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

   リージョンとアカウント ID は、このチュートリアルで使用しているデータストリームの ARN の値と同じですが、*name* は、コンシューマーアプリケーションによって作成および使用される DynamoDB テーブルの名前です。KCL では、アプリケーション名をテーブル名として使用します。このステップでは、DynamoDB テーブル名に `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. このチュートリアルで使用するデータストリームの ARN を入力します。

1. 以下の各項目について、[**ステートメントを追加**] を使用します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/streams/latest/dev/tutorial-stock-data-kplkcl2-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. 上記の手順で作成したポリシーを名前 (`StockTradeStreamPolicy`) で検索します。ポリシー名の左にあるボックスを選択し、[**次の手順: 確認**] を選択します。

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-kplkcl2-iam-next"></a>

[コードをダウンロードしてビルドする](tutorial-stock-data-kplkcl2-download.md)