sql >> データベース >  >> NoSQL >> HBase

HBaseACLのレンジャーポリシーへの変換

    CDPは、データセキュリティ管理にApacheRangerを使用しています。 Rangerを利用して一元化されたセキュリティ管理を行う場合は、HBaseACLをポリシーに移行する必要があります。これは、ClouderaManagerからアクセスできるRangerwebUIを介して実行できます。ただし、最初に、アクセス制御のためのHBaseメソッドの概要を簡単に見てみましょう。

    HBase認証

    承認が設定されている場合(たとえば、Kerberosを使用して hbase.security.authorizationを設定している場合 trueのプロパティ )、ユーザーは、アクセスを許可されているリソースにルールを定義できます。これらのルールは、テーブル内の個々のテーブル、列、およびセルに対して定義できます。

    HBaseアクセスレベル

    HBaseアクセスレベルは互いに独立して付与され、特定のスコープでさまざまなタイプの操作を可能にします。

    可能な権限(セット「RWXCA」からの0文字以上):

    • 読み取り(R)–指定されたスコープでデータを読み取ることができます
    • 書き込み(W)–指定されたスコープでデータを書き込むことができます
    • 実行(X)–指定されたスコープでコプロセッサーエンドポイントを実行できます
    • 作成(C)–指定されたスコープでテーブルを作成またはドロップできます
    • 管理者(A)–クラスターのバランス調整や特定のスコープでのリージョンの割り当てなどのクラスター操作を実行できます

    可能なスコープ:

    • スーパーユーザー–スーパーユーザーは、HBaseで利用可能な任意の操作を任意のリソースに対して実行できます。クラスタでHBaseを実行するユーザーはスーパーユーザーです。構成プロパティhbase.superuserに割り当てられたプリンシパル hbase-site.xml内 HMasterの構成ファイルもスーパーユーザーです。
    • グローバル–グローバルスコープで付与された権限により、管理者はクラスターのすべてのテーブルを操作できます。
    • 名前空間–名前空間スコープで付与された権限は、特定の名前空間内のすべてのテーブルに適用されます。
    • テーブル–テーブルスコープで付与された権限は、特定のテーブル内のデータまたはメタデータに適用されます。
    • ColumnFamily – ColumnFamilyスコープで付与された権限は、そのColumnFamily内のセルに適用されます。
    • セル–セルスコープで付与された権限は、その正確なセル座標に適用されます。

    HBaseACLのエクスポート

    1.HBaseサービスのクレデンシャルを使用してKerberos経由でログインします。

    2. hbaseシェルを起動し、ACLを一覧表示します。

    ACLを一覧表示するには、次のコマンドを使用します。

    • user_permission‘。*’
    • またはスーパーユーザー権限で:「hbase:acl」をスキャン

    scan‘hbase:acl‘:の出力例

    列+セル

    emp column=l:hbase, timestamp=1612190971868, value=RWXCA
    emp2 column=l:hbase, timestamp=1612191218963, value=RWXCA
    emp2 column=l:user1, timestamp=1612191426624, value=RWC
    emp column=l:test,personal data, timestamp=1612273141925, value=RW
    emp column=l:test,personal data,1, timestamp=1612273322678, value=RW
    emp column=l:@group-usr,personal data,1, timestamp=1612273324527, value=RW

    user_permission‘。*‘:の出力例

    User Namespace,Table,Family,Qualifier:Permission
    hbase default,emp,,: [Permission: actions=READ,WRITE,EXEC,CREATE,ADMIN]
    user1 default,emp2,,: [Permission: actions=READ,WRITE,CREATE]
    hbase default,emp2,,: [Permission: actions=READ,WRITE,EXEC,CREATE,ADMIN]
    test default,emp,personal data,: [Permission: actions=READ,WRITE]
    test default,emp,personal data,1: [Permission: actions=READ,WRITE]
    @group-usr default,emp,personal data,1: [Permission: actions=READ,WRITE]

    注: グループとユーザーには同じ方法でアクセスが許可されますが、グループの前には「@」文字が付きます。テーブルと名前名は同じ方法で指定されますが、名前名の前には「@」文字が付きます。

    セルレベルの権限の例:

    test             default,emp,personal data,1: [Permission: actions=READ,WRITE]

    「テスト」 ユーザーは「デフォルト」に対するRW権限を持っています 名前空間、テーブル’emp’ 、列「個人データ」‘1’ ..

    レンジャーポリシーの作成

    1. Cloudera Managerで、レンジャーサービスを選択します。
    2. webUIを見つけます レンジャーUIにリダイレクトするリンク。
    3. レンジャーUIにログインします。

    アクセスマネージャー 表示されたページ:

    1.既存のHBaseサービスを選択します。
    ポリシーのリスト ページが表示されます。

    2.新しいポリシーの追加をクリックします 。
    [ポリシーの作成]ページが表示されます。

    3.次のように[ポリシーの作成]ページに入力します。

    3.1ポリシーの詳細

    ポリシー名 適切なポリシー名を入力します。この名前をシステム全体で複製することはできません。このフィールドは必須です。
    ポリシーラベル このポリシーのラベルを指定します。これらのラベルに基づいてレポートを検索し、ポリシーをフィルタリングできます。
    通常/オーバーライド オーバーライドポリシーを指定できます。オーバーライドが選択されている場合、ポリシーのアクセス許可は既存のポリシーのアクセス許可をオーバーライドします。この機能を[有効期間の追加]とともに使用して、既存のポリシーを上書きする一時的なアクセスポリシーを作成できます。
    HBaseテーブル 適切なデータベースを選択します。特定のポリシーに対して複数のデータベースを選択できます。このフィールドは必須です。
    HBase列ファミリー 選択したテーブルについて、ポリシーが適用される列ファミリーを指定します。
    HBase列 選択したテーブルと列のファミリについて、ポリシーが適用される列を指定します。
    説明 (オプション)ポリシーの目的を説明してください。
    監査ログ このポリシーを監査するかどうかを指定します。 (監査を無効にするには、選択を解除します。)
    有効期間の追加 ポリシーの開始時刻と終了時刻を指定します。

    3.2許可/拒否条件
    ApacheRangerは、次のアクセス条件をサポートしています。

    • 許可
    • 許可から除外
    • 拒否
    • 拒否から除外

    これらのアクセス条件により、きめ細かいアクセス制御ポリシーを設定できます。

    たとえば、財務へのアクセスを許可できます。 財務のすべてのユーザーへのテーブル グループですが、インターンのすべてのユーザーへのアクセスを拒否します グループ。 インターンのメンバーの1人が グループ、スコット財務へのアクセスが必要な割り当てに取り組む必要があります テーブル。その場合、ユーザーが scottできるようにするExcludefromDeny条件を追加できます。 ファイナンスにアクセスするには データベース。

    役割の選択 このポリシーが適用される役割を指定します。

    役割を管理者として指定するには、[管理者の委任]チェックボックスをオンにします。管理者はポリシーを編集または削除でき、元のポリシーに基づいて子ポリシーを作成することもできます。
    グループを選択 このポリシーを適用するグループを指定します。

    グループを管理者として指定するには、[管理者の委任]チェックボックスをオンにします。管理者はポリシーを編集または削除でき、元のポリシーに基づいて子ポリシーを作成することもできます。
    ユーザーの選択 このポリシーを適用するユーザーを指定します。

    ユーザーを管理者として指定するには、[管理者の委任]チェックボックスをオンにします。管理者はポリシーを編集または削除でき、元のポリシーに基づいて子ポリシーを作成することもできます。
    許可 権限の追加または編集:読み取り、書き込み、作成、管理、すべての選択/選択解除。
    管理者の委任 Delegate Adminを使用して、ポリシーで指定されたユーザーまたはグループに管理者権限を割り当てることができます。管理者はポリシーを編集または削除でき、元のポリシーに基づいて子ポリシーを作成することもできます。

    3.3プラス(+)記号を使用して、条件を追加できます。条件は、ポリシーに記載されている順序で評価されます。リストの一番上にある条件が最初に適用され、次に2番目、次に3番目というように適用されます。拒否条件は常に強力です。次のフローチャートは、レンジャーポリシー評価フローに関する情報を提供します。

    3.4最後に[追加]をクリックします。

    結論

    このブログ投稿では、ClouderaManagerを使用してHBaseACLをRangerポリシーに移行する方法について説明しました。残念ながら、2つの認証方法は大きく異なるため、移行の自動化はありません。 Rangerには一括読み込みポリシー用のインポート機能がありますが、HBaseからRangerが理解できる形式(具体的にはフォーマットされたJSON / CSV)でACLをエクスポートする方法はありません。


    1. MongoDBMap-reduceマップ関数で変数を使用する方法

    2. ノードjSを使用したRedis構成セット

    3. 集約のための構造の生成

    4. MongoDB $ isArray