属性ベースのアクセス制御を使用したアクセス許可の付与 - AWS Lake Formation

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

属性ベースのアクセス制御を使用したアクセス許可の付与

このトピックでは、データカタログリソースに対する属性ベースのアクセス許可を付与するために必要な手順について説明します。Lake Formation コンソールまたは コマンドラインインターフェイス (AWS CLI) AWS を使用できます。

  1. Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) を開き、データレイク管理者、リソース作成者、またはリソースに対して付与可能なアクセス許可を持つIAM ユーザーとしてサインインします。

  2. 次のいずれかを行います。

    • ナビゲーションペインの [Permissions] (許可) で [Data lake permissions] (データレイクの許可) を選択します。次に、[Grant] (付与) を選択します。

    • ナビゲーションペインの[データカタログ] で、[カタログ] を選択します。次に、[アクセス許可][アクション] メニューからカタログオブジェクト (カタログ、データベース、テーブル、データフィルター) を選択し、[付与] を選択します。

  3. アクセス許可の付与」ページで、[属性別プリンシパル] を選択します。

  4. 属性のキーと値を指定します。複数の値を選択する場合は、OR 演算子で属性式を作成することになります。つまり、IAM ロールまたはユーザーに割り当てられた属性タグ値のいずれかが一致した場合、ロール/ユーザーはリソースに対するアクセス許可を取得します。

    複数の属性タグを指定する場合は、AND 演算子で属性式を作成することになります。プリンシパルには、属性式内の各属性タグに一致するタグが IAM ロール/ユーザーに割り当てられている場合にのみ、データカタログリソースに対する許可が付与されます。

    コンソールに表示された Cedar ポリシー式を確認します。

    [アクセス許可を付与] ダイアログボックスで、属性式が作成されます。
  5. アクセス許可の範囲を選択します。被付与者が外部アカウントに属している場合は、外部アカウントを選択し、 AWS アカウント ID を入力します。

  6. 次に、データカタログアカウントまたは外部アカウントを選択します。アクセス許可の付与を正常に完了するには、リソースに対応する付与可能なアクセス許可が必要です。

  7. 一致する属性を持つプリンシパル (ユーザーまたはロール) に実行を許可するアクションを指定します。アクセスは、指定した属性式の少なくとも 1 つに一致するタグと値が割り当てられた IAM エンティティに付与されます。コンソールで Cedar ポリシー式を確認します。Cedar の詳細については、「Cedar とは」を参照してください。| Cedar Policy Language Reference GuideLink を参照してください。

  8. 次に、アクセスを許可するデータカタログリソースを選択します。これらのアクセス許可は、カタログ、データベース、テーブル、データフィルターなど、さまざまなデータカタログリソースに対して定義できます。

  9. [付与] を選択します。

    このアプローチにより、属性に基づいてアクセスを制御できるため、適切なタグを持つユーザーまたはロールのみが、指定されたリソースに対して特定のアクションを実行できます。

次の例は、リソースで使用可能なすべてのアクセス許可を受け取るために満たす必要がある属性式を示しています。または、SelectDescribeDrop などの個々のアクセス許可を指定することもできます。式は Cedar ポリシー式を使用します。Cedar の詳細については、「Cedar とは」を参照してください。| Cedar Policy Language Reference GuideLink を参照してください。

この条件は、IAM プリンシパルに department タグがあり、department タグ値が sales に等しいかどうかを確認します。

aws lakeformation grant-permissions --principal '{"DataLakePrincipalIdentifier": "111122223333:IAMPrincipals"}' \ --resource '{"Database": {"CatalogId": 111122223333, "Name": "abac-db"}}' \ --permissions ALL \ --condition '{"Expression": "context.iam.principalTags.hasTag(\"department\") \ && context.iam.principalTags.getTag(\"department\") == \"sales\""}'