DynamoDB-アクセス制御

DynamoDBは、指定された認証情報を使用してリクエストを認証します。これらの認証情報は必須であり、AWSリソースアクセスの権限が含まれている必要があります。これらのアクセス許可は、DynamoDBのほぼすべての側面から、操作または機能のマイナーな機能にまで及びます。

権限の種類

このセクションでは、DynamoDBのさまざまなパーミッションとリソースアクセスについて説明します。

ユーザーの認証

サインアップ時に、root資格情報として機能するパスワードと電子メールを提供しました。DynamoDBはこのデータをAWSアカウントに関連付け、それを使用してすべてのリソースへの完全なアクセスを提供します。

ルート認証情報は、管理アカウントの作成にのみ使用することをお勧めします。これにより、より少ない権限でIAMアカウント/ユーザーを作成できます。IAMユーザーは、IAMサービスで生成された他のアカウントです。それらのアクセス許可/特権には、安全なページへのアクセスと、テーブルの変更などの特定のカスタム許可が含まれます。

アクセスキーは、追加のアカウントとアクセスのための別のオプションを提供します。これらを使用してアクセスを許可し、特定の状況で手動でアクセスを許可しないようにします。フェデレーションユーザーは、IDプロバイダーを介したアクセスを許可することにより、さらに別のオプションを提供します。

管理

AWSリソースは引き続きアカウントの所有権の下にあります。権限ポリシーは、リソースの生成またはアクセスに付与される権限を管理します。管理者は、権限ポリシーをIAM ID、つまりロール、グループ、ユーザー、およびサービスに関連付けます。また、リソースに権限を付加します。

権限は、ユーザー、リソース、およびアクションを指定します。管理者は、管理者権限を持つアカウントにすぎないことに注意してください。

操作とリソース

テーブルはDynamoDBの主要なリソースのままです。サブリソースは、ストリームやインデックスなどの追加リソースとして機能します。これらのリソースは一意の名前を使用しており、その一部を次の表に示します。

タイプ ARN(Amazonリソース名)
ストリーム arn:aws:dynamodb:region:account-id:table / table-name / stream / stream-label
インデックス arn:aws:dynamodb:region:account-id:table / table-name / index / index-name
テーブル arn:aws:dynamodb:region:account-id:table / table-name

所有

リソース所有者は、リソースを生成したAWSアカウント、またはリソース作成でのリクエスト認証を担当するプリンシパルエンティティアカウントとして定義されます。DynamoDB環境内でこれがどのように機能するかを検討してください-

  • ルート資格情報を使用してテーブルを作成する場合、アカウントはリソース所有者のままです。

  • IAMユーザーを作成し、テーブルを作成する権限をユーザーに付与する場合、アカウントはリソース所有者のままです。

  • IAMユーザーを作成してユーザーに付与する場合、およびテーブルを作成するためのロール、アクセス許可を引き受けることができるすべてのユーザーに、アカウントはリソース所有者のままです。

リソースアクセスの管理

アクセスの管理では、主にユーザーとリソースアクセスを説明するアクセス許可ポリシーに注意を払う必要があります。ポリシーをIAMIDまたはリソースに関連付けます。ただし、DynamoDBはIAM /アイデンティティポリシーのみをサポートします。

IDベース(IAM)ポリシーを使用すると、次の方法で特権を付与できます。

  • ユーザーまたはグループにアクセス許可を添付します。
  • クロスアカウント権限の役割に権限を添付します。

他のAWSでは、リソースベースのポリシーが許可されています。これらのポリシーは、S3バケットなどへのアクセスを許可します。

ポリシー要素

ポリシーは、アクション、効果、リソース、およびプリンシパルを定義します。これらの操作を実行する権限を付与します。

Note − API操作には、複数のアクションに対する権限が必要な場合があります。

次のポリシー要素を詳しく見てください-

  • Resource −ARNはこれを識別します。

  • Action −キーワードは、これらのリソース操作、および許可するか拒否するかを識別します。

  • Effect −アクションに対するユーザー要求の効果を指定します。つまり、デフォルトとして拒否を使用して許可または拒否します。

  • Principal −これは、ポリシーに関連付けられているユーザーを識別します。

条件

権限の付与では、特定の日付など、ポリシーがアクティブになる条件を指定できます。AWSシステム全体のキーとDynamoDBキーを含む条件キーで条件を表現します。これらのキーについては、チュートリアルの後半で詳しく説明します。

コンソールのアクセス許可

ユーザーがコンソールを使用するには、特定の基本的な権限が必要です。また、他の標準サービスのコンソールに対するアクセス許可も必要です-

  • CloudWatch
  • データパイプライン
  • IDおよびアクセス管理
  • 通知サービス
  • Lambda

IAMポリシーが制限されすぎていることが判明した場合、ユーザーはコンソールを効果的に使用できません。また、CLIまたはAPIを呼び出すだけのユーザーのアクセス許可について心配する必要はありません。

一般的なIamポリシー

AWSは、スタンドアロンのIAMマネージドポリシーを使用して、パーミッションの一般的な操作をカバーしています。これらは、付与する必要があるものについての詳細な調査を回避できるようにする主要なアクセス許可を提供します。

それらのいくつかは次のとおりです-

  • AmazonDynamoDBReadOnlyAccess −コンソールを介した読み取り専用アクセスを提供します。

  • AmazonDynamoDBFullAccess −コンソールを介したフルアクセスを提供します。

  • AmazonDynamoDBFullAccesswithDataPipeline −コンソールを介したフルアクセスを提供し、データパイプラインを使用したエクスポート/インポートを許可します。

もちろん、カスタムポリシーを作成することもできます。

特権の付与:シェルの使用

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つの例を確認できます-

Block the user from executing any table action.

{ 
   "Version": "2016-05-23", 
   "Statement": [ 
      { 
         "Sid": "AllAPIActionsOnTools", 
         "Effect": "Deny", 
         "Action": "dynamodb:*", 
         "Resource": "arn:aws:dynamodb:us-west-2:155556789012:table/Tools" 
      } 
   ] 
}

Block access to a table and its indices.

{ 
   "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/*" 
         ] 
      } 
   ] 
}

Block a user from making a reserved capacity offering purchase.

{ 
   "Version": "2016-05-23", 
   "Statement": [ 
      { 
         "Sid": "BlockReservedCapacityPurchases", 
         "Effect": "Deny", 
         "Action": "dynamodb:PurchaseReservedCapacityOfferings", 
         "Resource": "arn:aws:dynamodb:us-west-2:155556789012:*" 
      } 
   ] 
}

特権の付与:GUIコンソールの使用

GUIコンソールを使用してIAMポリシーを作成することもできます。まず、選択しますTablesナビゲーションペインから。テーブルリストで、ターゲットテーブルを選択し、次の手順に従います。

Step 1 −を選択します Access control タブ。

Step 2− IDプロバイダー、アクション、およびポリシー属性を選択します。選択するCreate policy すべての設定を入力した後。

Step 3 −選択 Attach policy instructions、およびポリシーを適切なIAMロールに関連付けるために必要な各ステップを完了します。