この記事は、2024/1/26に公開された「Metadata Management and Data Governance with Cloudera SDX」の翻訳です。
本ブログ記事では、Cloudera プラットフォームのデータ・ガバナンス・フレームワークにきめ細かいアクセス制御を実装するプロセスについて、順を追ってご説明します。これにより、データオフィスはタグや分類、ビジネス用語集、データ・カタログ・エンティティのようなメタデータ管理資産に対するアクセスポリシーを実装し、包括的なデータアクセス制御の基礎を築くことができます。
優れたデータガバナンス戦略では、ユーザーが戦略的データ資産にアクセスできるレベルをビジネスが制限できるようにする役割を定義することが重要です。従来、データ・ガバナンス・オフィスは主に3つの役割を担っています:
Cloudera プラットフォーム内では、オンプレミスまたは主要なパブリック・クラウド・プロバイダーのいずれかを使用して展開されているかにかかわらず、Cloudera Shared Data Experience (SDX) がデータセキュリティとガバナンス全般の一貫性を保証します。SDXはあらゆる展開の基本的な部分であり、データ管理機能を提供するために2つの主要なオープン・ソース・プロジェクトに依拠しています。Apache Atlas は拡張可能かつ伸張可能なコア・ガバナンス・サービスのセットを提供し、Apache Ranger はデータとメタデータ両方の包括的なセキュリティを有効化、監視、管理します。
この記事では、Apache Atlas に格納されたメタデータ管理資産に対してセキュリティポリシーを作成し、Apache Ranger を使用してきめ細かいアクセス制御戦略を実装する方法をご説明します。
この記事では、企業のセントラル・データ・リポジトリ内でメタデータオブジェクトへのアクセスを制御したいデータ・ガバナンス・オフィスを例にご説明します。これにより、組織は政府の規制や社内のセキュリティポリシーに準拠することができます。このタスクのために、データ・ガバナンス・チームはまず財務ビジネスユニットに注目し、組織内のさまざまなタイプのユーザーの役割と責任を定義しました。
この例では、3種類の異なるユーザーが存在し、これにより Cloudera プラットフォームでデータガバナンス戦略を実装するために、Apache Ranger ポリシーを通じてApache Atlasオブジェクトに割り当てることができるさまざまなレベルの権限を示すことができます。
必要であれば、追加の役割やアクセスレベルを作成するのも同様に容易なことにご留意ください。例に沿って進めていくとわかりますが、Apache Atlas と Apache Ranger が提供するフレームワークは、非常に柔軟でカスタマイズが可能です。
まず、データスチュワードによって一連の初期メタデータオブジェクトが作成されます。これにより、財務チームは、日々の業務の一環として関連資産を検索できるようになります。
注:ビジネスメタデータの属性の作成は、こちらの手順に従ってください。
次に、財務ビジネスユニットに関連するデータ資産へのアクセスを制御するために、以下の条件で一連のポリシーを実装する必要があります。
財務データキュレーター<etl_user>に許可されるのは以下のみです:
財務データコンシューマー<joe_analyst>に許可されるのは、以下のみです:
次のセクションでは、これらのポリシーを実装するプロセスについて詳しくご説明します。
上述のビジネスニーズを満たすために、Apache Ranger のアクセスポリシーをどのように設定し、Apache Atlas のメタデータ資産を保護・制御するかを実証します。この目的のため、パブリックAMIイメージを使用して、すべての SDX コンポーネントを含む Cloudera データプラットフォーム環境をセットアップしました。環境のセットアッププロセスは、こちらの記事でご説明しています。
分類はApache Atlas のコアの一部です。これは、組織がビジネスプロセスを推進するデータ資産への理解を助け、整理し、共有するために提供されるメカニズムの1つです。重要なのは、データ資産間の系統関係に従って、エンティティ間で分類を ”propagate” できることです。propagationの詳細については、こちらのページをご参照ください。
1.1データスチュワード - admin user
分類へのアクセスを制御するには、データスチュワードの役割を担うadmin userが以下の手順を実行する必要があります。
まず、Rangerのadmin UIからAtlas Rangerポリシーリポジトリにアクセスします。
Atlasポリシーリポジトリ内:
最初に表示されるのは、デフォルトのAtlasポリシーです(注釈1)。Apache Rangerではアクセスポリシーを “allow”ルールと”deny”ルールの両方で指定することができます。しかし、”principle of least privilege”を適用することは、あらゆるセキュリティーコンテキストにおいて推奨されるグッドプラクティスです。すなわち、デフォルトでアクセスをdenyし、選択的にのみアクセスをallowします。これは、すべての人にアクセスをallowし、選択的にアクセスをdenyしたり除外したりするよりも、はるかに安全なアプローチです。したがって、最初のステップとして、デフォルトのポリシーが、この例のシナリオにおいて、制限しようとしているユーザーに包括的なアクセスを許可していないことを確認する必要があります。
その後、新しいポリシーを作成できます (例: denyポリシーを作成することで、デフォルトポリシーのパブリックアクセスを削除します。注釈2)。最後に、新しく作成したポリシーがセクションの下部に表示されることが確認できます(注釈3)。
“Add New Policy”ボタンをクリックした後:
最後に、ポリシーに付与する権限とポリシーによって制御するグループおよびユーザーを定義します。この例では、group:financeとuser:joe_analystにRead Type権限を適用し、user:etl_userに Create Type と Read Type 権限を適用します(注釈 4)。
これで、FINANCE* に一致する分類に対する Create Type 権限を持っているため、データキュレーターの etl_user は “FINANCE_WW”という新しい分類タグを作成し、このタグをその他のエンティティに適用することができます。これは、特定のデータ資産へのアクセスを提供するために、タグベースのアクセスポリシーが別の場所で定義されている場合に便利です。
1.2 データキュレーター - etl_user user
これで、分類ポリシーがetl_userに対してどのように適用されるかを示すことができます。このユーザーはfinanceという単語で始まる分類しか見ることができませんが、その部門に属するさまざまなチームに追加で作成することもできます。
etl_userは、新しい分類タグFINANCE_WWを親分類タグFINANCE_BUの下に作成できます。
Atlasで分類を作成するには:
次に、”+”ボタンをクリックして、新しい分類を作成します(注釈 2)。
新しいウィンドウが開き、新しい分類を作成するための様々な詳細情報が要求されます。
[オプション] この例では、”country”という属性を作成することができますが、これは単にアセットの整理に役立ちます。便宜上、この属性を “string”(フリーテキスト)タイプにすることもできますが、実際のシステムでは、ユーザーの入力が有効な値のセットに制限されるように、おそらく列挙を定義することになるでしょう。
“create”ボタンをクリックすると、新しく作成された分類がパネルに表示されます:
これでトグルボタンをクリックして、タグをツリーモードで見ることができ、両方のタグ間の親/子の関係を見ることができます。
分類をクリックすると、親タグ、属性、現在その分類でタグ付けされている資産など、すべての詳細が表示されます。
1.3データコンシューマ - joe_analyst user
分類の承認プロセスの最後のステップは、データコンシューマーの役割から、制御が適切に実行され、ポリシーが正しく適用されていることを検証することです。
user joe_analystでログインに成功した後:
ポリシーが適用され、ポリシーで定義する権限レベルに基づいてFINANCEという単語で始まる分類のみにアクセスできることを検証するには、分類タブ (注釈 2) をクリックし、使用可能なリストを確認します(注釈 3)。
ここで、エンティティのコンテンツにアクセスできるようにするには(注釈 4)、ビジネス要件に基づいて、Atlasエンティ ティタイプのカテゴリと、対応するレベルの権限で特定のエンティティにアクセスできるようにする必要があります。次のセクションでは、まさにそのことについて触れます。
このセクションでは、データガバナンス戦略において重要な、Atlasに存在する追加タイプのオブジェクト、具体的にはエンティティ、ラベル、ビジネスメタデータの保護方法についてご説明します。
Apache Atlasのエンティティは”type”の特定のインスタンスであり、プラットフォーム内のデータ資産を表す中核的なメタデータオブジェクトです。例えば、あなたのレイクハウスに “sales_q3”というIcebergテーブルフォーマットで保存されたデータテーブルがあるとしましょう。これは、Apache Atlasでは “Iceberg table”というエンティティタイプと、そのエンティティタイプの特定のインスタンスである “sales_q3”という名前のエンティティによって反映されます。Clouderaプラットフォームにはデフォルトで多くのエンティティタイプが設定されており、あなたが新しいエンティティタイプを定義することもできます。エンティティタイプや特定のエンティティへのアクセスは、Rangerポリシーによって制御することができます。
ラベルは、エンティティに関連付け、その他のエンティティに再利用できる単語またはフレーズ(文字列)です。ラベルは、エンティティに情報を追加する軽量な方法で、エンティティを簡単に見つけ、エンティティに関する知識を他の人と共有することができます。
ビジネスメタデータは、admin user(例えば、データスチュワード)によって事前に定義された、関連するキーと値のペアのセットです。ビジネスメタデータは、メタデータエンティティの整理、検索、管理に役立つビジネスの詳細をキャプチャするために使用されることが多いため、このような名前が付けられています。例えば、マーケティング部門のスチュワードはキャンペーンの一連の属性を定義し、これらの属性を関連するメタデータオブジェクトに追加することができます。対照的に、データ資産に関する技術的な詳細は、通常、エンティティインスタンスの属性としてより直接的にキャプチャされます。これらはデータレイクハウスまたはウェアハウス内のデータセットを監視するプロセスによって作成および更新され、特定のCloudera 環境では通常カスタマイズされません。
このような背景をご説明した上で、エンティティのさまざまなメタデータを追加、更新、または削除できる人を制御するポリシーの設定に移ります。ラベルとビジネスメタデータの両方に対して、分類だけでなく、きめ細かいポリシーを別々に設定することができます。これらのポリシーは、データキュレーターとコンシューマーが行う業務を制御するために、データスチュワードによって定義されます。
2.1データスチュワード - admin user
まず、ユーザーがシステムのエンティティタイプにアクセスできるようにすることが重要です。これにより、特定のエンティティを探すときに、検索をフィルタリングできるようになります。
そのためには、ポリシーを作成する必要があります:
ポリシーの作成ページで、前述のように名前とラベルを定義します。次に、type-category”entity”(注釈 1)を選択します。ワイルドカード表記 (*) (注釈 2) を使用して、すべてのエンティティタイプを表示し、利用可能なすべての権限をetl_userとjoe_analystに付与します (注釈 3)。これで、これらのユーザーは、システム内のすべてのエンティティタイプを閲覧できるようになります。
次のステップは、データコンシューマーjoe_analystに、finance分類タグを持つエンティティの読み取りアクセスだけを許可することです。これで、このユーザーがプラットフォームで閲覧できるオブジェクトが制限されます。
これを行うには、前のセクションで示したのと同様のプロセスに従ってポリシーを作成する必要がありますが、ポリシーの詳細については若干変更する必要があります:
このように、分類タグのような追加のメタデータオブジェクトを使用して、特定のエンティティへのアクセスを制御することができます。Atlasは、プラットフォームに登録されたエンティティをリッチ化するだけでなく、これらのオブジェクトに対するガバナンス戦略を実装し、誰がアクセスしたり変更したりできるかを制御するために使用できる、その他のメタデータオブジェクトをいくつか提供しています。これはラベルとビジネスメタデータの例です。
誰がラベルを追加したり削除したりできるかを制御したい場合:
同じ原理をビジネスメタデータの権限を制御するために適用できます:
Apache RangerがApache Atlasオブジェクトに対して提供するきめ細かいアクセス制御の一部として、エンティティIDを使用して制御したいオブジェクトを正確に指定するポリシーを作成することができます。上記の例では、”all entities”を参照するためにワイルドカード(*)を頻繁に使用しましたが、以下では、よりターゲットを絞った使用例をお見せします。
このシナリオでは、”World Wide Bank”という特定のプロジェクトの一部であるデータテーブルに関するポリシーを作成しようと思います。基準として、プロジェクトのオーナーは、すべてのテーブルを”worldwidebank”というデータベースに格納することを求めています。
この要件を満たすために、ClouderaのApache Atlasのディストリビューションにあらかじめ設定されているエンティティタイプの1つ、すなわち “hive_table”を使用することができます。このエンティティタイプでは、識別子は常にテーブルが属するデータベースの名前で始まります。Ranger式を使用して、”World Wide Bank”プロジェクトに属するすべてのエンティティをフィルタリングすることができます。
worldwidebankエンティティを保護するポリシーを作成するには:
2.2データキュレーター - etl_user user
財務データコンシューマーのjoe_analystがworldwidebankプロジェクトのエンティティを使用・アクセスできるようにするには、データキュレーター etl_userが承認された分類でエンティティにタグを付け、必要なラベルとビジネスメタデータ属性を追加する必要があります。
Atlasにログインし、手順に従って適切なエンティティにタグを付けます:
エンティティ名をクリックすると、エンティティの詳細ページが表示されます:
画面上部には、エンティティに割り当てられている分類が表示されます。この例では、タグは割り当てられていません。ここで”+”記号をクリックしてタグを割り当てます。
“Add Classification”画面では:
これで、選択した分類にエンティティがタグ付けされます。
ここで、worldwidebank hive_dbエンティティを新しいラベルと “Project”という新しいビジネスメタデータ属性でリッチ化します。
ラベルを追加するには、ラベルメニューの”Add”をクリックします。
ビジネスメタデータ属性を追加するには、ビジネス・メタデータ・メニューの “Add”をクリックします。
注:ビジネスメタデータの属性の作成はブログには含まれていませんが、手順はこちらに従ってください。
“worldwidebank”Hiveオブジェクトに “FINANCE_WW”分類のタグが付けられると、データコンシューマーはそのオブジェクトにアクセスして詳細を見ることができるようになります。また、データコンシューマーが、”finance”で始まる分類でタグ付けされた他のすべてのエンティティにアクセスできることを確認することも重要です。
2.3データコンシューマー - joe_analyst user
ポリシーが正しく適用されていることを検証するために、Atlasにログインします:
分類タブをクリックし、検証します:
FINANCE_WWタグをクリックし、”worldwidebank”hive_db オブジェクトへのアクセスを検証します。
“worldwidebank”オブジェクトをクリックした後:
前のステップで財務データキュレーターによってリッチ化された資産の詳細がすべて見られます:
このセクションでは、データスチュワードがポリシーを作成して、用語集と用語集の用語に対するきめ細かなアクセス制御を許可する方法をご説明します。これにより、データスチュワードは誰が用語集にアクセス・リッチ化・変更できるかを制御し、不正アクセスやミスからコンテンツを保護することができます。
用語集は、ビジネスユーザーに適切な語彙を提供し、用語 (単語) 同士を関連付け、異なるコンテキストでも理解できるように分類します。これらの用語は、後にデータベース、テーブル、カラムなどのエンティティに適用することができます。これにより、リポジトリに関連する専門用語が抽象化され、ユーザーはより馴染みのある語彙でデータを見つけ、扱うことができます。
用語集や用語に分類タグを付けることもできます。この利点は、用語集の用語がエンティティに適用されると、用語の分類がエンティティにも適用されることです。データ・ガバナンス・プロセスの観点からは、これは、ビジネスユーザーが用語集に記録された独自の用語を使用してエンティティの内容をリッチ化でき、分類も自動的に適用できる、ということであり、これまで見てきたように、アクセス制御を定義する際に使用される、より”technical”なメカニズムです。
まず、データスチュワードとして、名前に特定の単語を含む用語集オブジェクトへの読み取りアクセスを付与するポリシーを作成し、データコンシューマーが特定のコンテンツへのアクセスが許可されていることを検証できる方法をお見せします。
3.1データスチュワード – admin user
用語集と用語へのアクセスを制御するポリシーを作成するには、以下のようにします:
“Finance”用語集オブジェクトのみにアクセスできることを検証します:
この記事では、組織が、SDXの基本的かつ不可欠なコンポーネントであるApache AtlasとApache Rangerの両方を活用して、Clouderaプラットフォームのデータ・ガバナンス・コンポーネントに対してどのようにきめ細かいアクセス制御戦略を実装できるかをご紹介しました。ほとんどの組織には、 データアクセスに対する成熟したアプローチがありますが、メタデータを制御することは、仮に考慮されていたとしても、あまり定義されていないのが一般的です。この記事で共有されている洞察とメカニズムは、データならびにメタデータのガバナンスに対するより全面的なアプローチの実装に役立ちます。このアプローチは、データ・ ガバナンス・コンポーネントが重要な役割を果たすコンプライアンス戦略のコンテキストにおいて非常に重要です。
SDXの詳細についてはこちらをご覧下さい。また、具体的なデータガバナンスのニーズについては、ぜひ当社にお問い合わせください。
This may have been caused by one of the following: