ユーザーアクセスをきめ細かく制御する
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
ScalarDB Cluster は、属性ベースのアクセス制御 (ABAC) と呼ばれるメカニズムを使用して、ユーザーをきめ細かく認証できます。このページでは、ScalarDB Cluster で ABAC を使用する方法について説明します。
ABAC とは?
ABAC は ScalarDB Cluster のきめ細かいアクセス制御メカニズムであり、単純な認証によって実行されるテーブルレベルのアクセス制御だけでなく、レコードレベルのアクセス制御を可能にします。ABAC を使用すると、ユーザーは、ユーザーの属性とレコードの属性が一致する場合にのみ、特定のレコードにアクセスできます。たとえば、機密性の高いレコードへのアクセスを、必要な権限を持つユーザーのみに制限できます。このメカニズムは、複数のアプリケーションが同じテーブルを共有しているが、それぞれの権限に基づいて異なるセグメントにアクセスする必要がある場合にも役立ちます。
ABAC を使用する理由
エンタープライズデータベースでは、多くの場合、行レベルのセキュリティまたは同様の代替手段が提供され、データベーステーブル内の行へのアクセスを制御できます。ただし、システムが複数のデータベースで構成されている場合は、各データベースを1つずつ同じ方法で設定する必要があります。異なる種類のデータベースを使用する場合は、各データベースの機能の違いを理解した上で各データベースを設定する必要があります。このような設定は負担が大きすぎ、エラーが発生しやすくなります。ABAC を使用すると、ScalarDB で複数のデータベースを管理する場合でも、1回設定するだけで済みます。
ほとんどのデータベースの行レベルのセキュリティ機能では、 ストアドプロシージャなどの関数を使用してマッチングロジックを実装する必要があります。これにより、必要なロジックを実現するために大量のコードを記述することになり、負担が大きくなることがあります。対照的に、ABAC では、タグと呼ばれる属性を使用してマッチングロジックを設定できます。ABAC では、これらのタグを定義してユーザーとレコードに割り当てるだけでよいため、コーディングの必要がありません。タグは、柔軟かつ簡単な方法でマッチングロジックを指定できる複数のコンポーネントで構成されています。
コンポーネント
ABAC には、タグやポリシーなどのいくつかのコンポーネントがあります。
タグ
タグは、レベル、コンパートメント、グループの3つのコンポーネントで構成される単一の属性であり、ユーザーやデータに割り当てることができます。ユーザーに割り当てられたタグは ユーザータグ と呼ばれ、データに割り当てられたタグは データタグ と呼ばれます。
レベル
レベルコンポーネントはデータの機密性を示します。すべてのユーザ ータグとデータタグにはレベルが必要です。たとえば、ユーザーは 機密、機密性の高い、非常に機密性の高い などのレベルを定義できます。
各レベルについて、スーパーユーザーは次の属性を定義します。
| 属性 | 説明 |
|---|---|
| 短い名前 | レベルの短い識別子。この名前は最大30文字まで含めることができます。 |
| 長い名前 | レベルの長く説明的な名前。 |
| レベル番号 | レベルのランクを表す数値。 |
スーパーユーザーは各レベル (および他のタグコンポーネント) の長い名前と短い名前の両方を定義しますが、ABAC の下で行を取得する際に表示されるのは短い名前のみです。ユーザーがタグを操作する際には、コンポーネントの短い名前のみを使用する必要があります。
コンパートメント
コンパートメントコンポーネントはオプションであり、コンパートメントは互いに独立しています。通常、1つ以上のコンパートメントが定義され、データを異なるカテゴリに分類します。コンパートメントは、特定のデータタイプ、知識領域、地理的地域、または特別な承認が必要なプロジェクトを表すことがあります。たとえば、HR、Finance、Accounting などです。
各コンパートメントについて、スーパーユーザーは次の属性を定義します。
| 属性 | 説明 |
|---|---|
| 短い名前 | コンパートメントの短い識別子。この名前は最大30文字まで含めることができます。 |
| 長い名前 | コンパートメントの長く説明的な名前。 |
グループ
グループコンポーネントもオプションであり、コンパートメントと似ていますが、1つの重要な違いがあります。グループは親子関係を持つことができます。通常、1つ以上のグループが定義され、データを整理します。グループは、組織構造や地域ごとにデータをセグメント化するために最もよく使用されます。たとえば、EU には子グループ France と Italy があり、North America には子グループ US と Canada があります。
各グループについて、スーパーユーザーは次の属性を定義します。
| 属性 | 説明 |
|---|---|
| 短い名前 | グループの短い識別子。この名前は最大30文字まで含めることができます。 |
| 長い名前 | グループの長く説明的な名前。 |
タグ構文
タグは、レベル、コンパートメント、およびグループで構成される文字列として表されます。タグの構文は次のとおりです。
LEVEL:COMPARTMENT1,...,COMPARTMENTn:GROUP1,...,GROUPn
コロン (:) はコンポーネント間の区切り文字として使用されます。末尾の区切り文字は省略可能です。
たとえば、レベルが SENSITIVE、コンパートメントが HR と FINANCIAL、グループが EU と NA のタグは次のようになります。
SENSITIVE:HR,FINANCIAL:EU,NA
コンパートメントやグループがない場合、タグは次のようになります。
SENSITIVE
コンパートメントがあり、グループがない場合、タグは次のようになります。
SENSITIVE:HR,FINANCIAL
グループがあり、コンパートメントがない場合、タグは次のようになります。
SENSITIVE::EU,NA