Dynamodb-access-control
DynamoDB-アクセス制御
DynamoDBは、リクエストを認証するために提供された資格情報を使用します。 これらの認証情報は必須であり、AWSリソースアクセスのアクセス許可を含める必要があります。 これらの権限は、DynamoDBのほぼすべての側面から、操作または機能のマイナーな機能にまで及びます。
許可の種類
このセクションでは、DynamoDBのさまざまな権限とリソースアクセスについて説明します。
ユーザーの認証
サインアップ時に、ルート資格情報として機能するパスワードと電子メールを提供しました。 DynamoDBはこのデータをAWSアカウントに関連付け、それを使用してすべてのリソースへの完全なアクセスを提供します。
AWSでは、管理アカウントの作成にのみルート認証情報を使用することをお勧めします。 これにより、より少ない権限でIAMアカウント/ユーザーを作成できます。 IAMユーザーは、IAMサービスで生成される他のアカウントです。 アクセス許可/特権には、セキュリティで保護されたページへのアクセスや、テーブルの変更などの特定のカスタム許可が含まれます。
アクセスキーは、追加のアカウントとアクセスのための別のオプションを提供します。 これらを使用してアクセスを許可し、特定の状況でのアクセスの手動許可を回避します。 フェデレーションユーザーは、IDプロバイダーを介したアクセスを許可することにより、さらに別のオプションを提供します。
管理
AWSリソースはアカウントの所有権のままです。 許可ポリシーは、リソースの生成またはアクセスに付与される許可を管理します。 管理者は、アクセス許可ポリシーをIAM ID、つまりロール、グループ、ユーザー、サービスに関連付けます。 また、リソースにアクセス許可を付加します。
許可は、ユーザー、リソース、およびアクションを指定します。 管理者は、単に管理者特権を持つアカウントであることに注意してください。
操作とリソース
テーブルは引き続きDynamoDBの主要なリソースです。 サブリソースは、追加のリソース(ストリームやインデックスなど)として機能します。 これらのリソースは一意の名前を使用し、その一部は次の表に記載されています-
Type | ARN (Amazon Resource Name) |
---|---|
Stream | arn:aws:dynamodb:region:account-id:table/table-name/stream/stream-label |
Index | arn:aws:dynamodb:region:account-id:table/table-name/index/index-name |
Table | arn:aws:dynamodb:region:account-id:table/table-name |
所有権
リソース所有者は、リソースを生成したAWSアカウント、またはリソース作成時のリクエスト認証を担当するプリンシパルエンティティアカウントとして定義されます。 これがDynamoDB環境内でどのように機能するかを検討してください-
- ルート資格情報を使用してテーブルを作成する場合、アカウントはリソース所有者のままです。
- IAMユーザーを作成し、ユーザーにテーブルを作成するアクセス許可を付与する際、アカウントはリソース所有者のままです。
- IAMユーザーを作成し、ユーザー、およびロールを引き受けることができるユーザー、テーブルを作成する権限を付与する際、アカウントはリソース所有者のままです。
リソースアクセスの管理
アクセスの管理では、主にユーザーとリソースアクセスを説明するアクセス許可ポリシーに注意する必要があります。 ポリシーをIAM IDまたはリソースに関連付けます。 ただし、DynamoDBはIAM/IDポリシーのみをサポートします。
アイデンティティベース(IAM)ポリシーを使用すると、次の方法で特権を付与できます-
- ユーザーまたはグループにアクセス許可を添付します。
- クロスアカウント権限のロールに権限を添付します。
他のAWSでは、リソースベースのポリシーが許可されています。 これらのポリシーは、S3バケットなどへのアクセスを許可します。
ポリシー要素
ポリシーは、アクション、効果、リソース、およびプリンシパルを定義します。これらの操作を実行する権限を付与します。
注-API操作には、複数のアクションのアクセス許可が必要な場合があります。
次のポリシー要素を詳しく見てください-
- リソース-ARNはこれを識別します。
- アクション-これらのリソース操作、および許可するか拒否するかを識別するキーワード。
- 効果-アクションに対するユーザーリクエストの効果を指定します。これは、拒否をデフォルトとして許可または拒否を意味します。
- プリンシパル-これは、ポリシーに関連付けられているユーザーを識別します。
条件
権限を付与する際に、特定の日付など、ポリシーがアクティブになるタイミングの条件を指定できます。 AWSシステム全体のキーとDynamoDBキーを含む条件キーで条件を表現します。 これらのキーについては、チュートリアルの後半で詳しく説明します。
コンソールのアクセス許可
ユーザーがコンソールを使用するには、特定の基本的な権限が必要です。 また、他の標準サービスのコンソールの権限も必要です-
- CloudWatch
- データパイプライン
- アイデンティティおよびアクセス管理
- 通知サービス
- ラムダ
IAMポリシーの制限が強すぎる場合、ユーザーはコンソールを効果的に使用できません。 また、CLIまたはAPIを呼び出すだけのユーザーのアクセス許可について心配する必要はありません。
一般的な使用Iamポリシー
AWSは、スタンドアロンIAM管理ポリシーを使用したアクセス許可の一般的な操作をカバーしています。 これらは重要な権限を提供するため、付与する必要のあるものに対する深い調査を避けることができます。
それらのいくつかは次のとおりです-
- AmazonDynamoDBReadOnlyAccess -コンソール経由で読み取り専用アクセスを提供します。
- AmazonDynamoDBFullAccess -コンソールを介したフルアクセスを提供します。
- AmazonDynamoDBFullAccesswithDataPipeline -コンソールを介したフルアクセスを提供し、Data Pipelineによるエクスポート/インポートを許可します。
もちろん、カスタムポリシーを作成することもできます。
特権の付与:シェルの使用
Javascriptシェルを使用して許可を付与できます。 次のプログラムは、典型的な許可ポリシーを示しています-
{
"Version": "2016-05-22",
"Statement": [
{
"Sid": "DescribeQueryScanToolsTable",
"Effect": "Deny",
"Action": [
"dynamodb:DescribeTable",
"dynamodb:Query",
"dynamodb:Scan"
],
"Resource": "arn:aws:dynamodb:us-west-2:account-id:table/Tools"
}
]
}
次の3つの例を確認できます-
ユーザーによるテーブルアクションの実行をブロックします。
{
"Version": "2016-05-23",
"Statement": [
{
"Sid": "AllAPIActionsOnTools",
"Effect": "Deny",
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:us-west-2:155556789012:table/Tools"
}
]
}
テーブルとそのインデックスへのアクセスをブロックします。
{
"Version": "2016-05-23",
"Statement": [
{
"Sid": "AccessAllIndexesOnTools",
"Effect": "Deny",
"Action": [
"dynamodb:*"
],
"Resource": [
"arn:aws:dynamodb:us-west-2:155556789012:table/Tools",
"arn:aws:dynamodb:us-west-2:155556789012:table/Tools/index/*"
]
}
]
}
- ユーザーがリザーブドキャパシティーオファリングを購入できないようにします
{
"Version": "2016-05-23",
"Statement": [
{
"Sid": "BlockReservedCapacityPurchases",
"Effect": "Deny",
"Action": "dynamodb:PurchaseReservedCapacityOfferings",
"Resource": "arn:aws:dynamodb:us-west-2:155556789012:*"
}
]
}
特権の付与:GUIコンソールの使用
GUIコンソールを使用してIAMポリシーを作成することもできます。 まず、ナビゲーションペインから[テーブル]を選択します。 テーブルリストで、ターゲットテーブルを選択し、次の手順に従います。
- ステップ1 *-*アクセス制御*タブを選択します。
ステップ2 *-IDプロバイダー、アクション、およびポリシー属性を選択します。 すべての設定を入力した後、 *Create policy を選択します。
- ステップ3 *-*ポリシー指示の添付*を選択し、必要な各ステップを完了して、ポリシーを適切なIAMロールに関連付けます。