アクセス制御
DataHub は、アクセス制御に Resource Access Management (RAM) を使用します。必要な権限が付与されている RAM ユーザーのみが DataHub のリソースにアクセスできます。Alibaba Cloud アカウントは、その中のリソースに対するすべての権限を持っています。デフォルトでは、RAM ユーザーの作成後、RAM ユーザーは DataHub のリソースにアクセスする権限を持っていません。RAM ユーザーが DataHub のリソースにアクセスできるようにするには、DataHub に対するアクセス権限を含むポリシーを RAM ユーザーにアタッチする必要があります。RAM ユーザーの作成方法とユーザーへのポリシーのアタッチ方法の詳細については、「Alibaba Cloud アカウントに 多要素認証 (MFA) デバイスをバインドする」をご参照ください。このトピックでは、RAM を使用して DataHub のアクセス制御を実装する方法について説明します。
RAM ユーザーに権限を付与する
RAM ユーザーがアクセスできる DataHub リソースの種類
RAM ユーザーは、DataHub の次のリソースにアクセスできます:プロジェクト、トピック、およびサブスクリプション。DataHub は、プロジェクト、トピック、およびサブスクリプションの RAM 認証をサポートしています。ただし、RAM 認証を使用してシャードデータにアクセスすることはできません。サブスクリプションとは、特定のプロジェクトのトピック内のレコードを読み取って処理するようにアプリケーションを指定する操作です。
リソースの種類 | 説明 |
プロジェクト | acs:dhs:$region:$accountid:projects/$projectName |
トピック | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName |
サブスクリプション | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName/subscriptions/$subId |
DataHub の API 操作と対応する RAM ポリシー
プロジェクト
操作 | アクション | リソース |
CreateProject | dhs:CreateProject | acs:dhs:$region:$accountid:projects/* |
ListProject | dhs:ListProject | acs:dhs:$region:$accountid:projects/* |
DeleteProject | dhs:DeleteProject | acs:dhs:$region:$accountid:projects/$projectName |
GetProject | dhs:GetProject | acs:dhs:$region:$accountid:projects/$projectName |
トピック
操作 | アクション | リソース |
CreateTopic | dhs:CreateTopic | acs:dhs:$region:$accountid:projects/$projectName/topics/* |
ListTopic | dhs:ListTopic | acs:dhs:$region:$accountid:projects/$projectName/topics/* |
DeleteTopic | dhs:DeleteTopic | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName |
GetTopic | dhs:GetTopic | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName |
UpdateTopic | dhs:UpdateTopic | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName |
サブスクリプション
操作 | アクション | リソース |
CreateSubscription | dhs:CreateSubscription | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName/subscriptions/* |
DeleteSubscription | dhs:DeleteSubscription | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName/subscriptions/$subId |
GetSubscription | dhs:GetSubscription | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName/subscriptions/$subId |
UpdateSubscription | dhs:UpdateSubscription | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName/subscriptions/$subId |
ListSubscription | dhs:ListSubscription | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName/subscriptions/* |
CommitOffset | dhs:GetSubscription | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName/subscriptions/$subId |
GetOffset | dhs:GetSubscription | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName/subscriptions/$subId |
コネクタ
操作 | アクション | リソース |
CreateConnector | dhs:CreateConnector | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName/connectors/* |
DeleteConnector | dhs:DeleteConnector | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName/connectors/* |
GetConnector | dhs:GetConnector | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName/connectors/* |
UpdateConnector | dhs:UpdateConnector | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName/connectors/* |
ListConnector | dhs:ListConnector | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName/connectors/* |
シャード
操作 | アクション | リソース |
ListShard | dhs:ListShard | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName |
MergeShard | dhs:UpdateShard | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName |
SplitShard | dhs:UpdateShard | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName |
PubSub
操作 | アクション | リソース |
PutRecords | dhs:PutRecords | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName |
GetRecords | dhs:GetRecords | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName |
GetCursor | dhs:GetRecords | acs:dhs:$region:$accountid:projects/$projectName/topics/$topicName |
DataHub の RAM ポリシーに適用できる条件
条件 | 機能 | 有効な値 |
acs:SourceIp | IP アドレスまたは CIDR ブロックを指定します。 | 標準の IP アドレス。ワイルドカードとしてアスタリスク (*) を設定できます。 |
acs:SecureTransport | 指定されたオブジェクトへのアクセスに HTTPS を使用するかどうかを指定します。 | true/false |
acs:MFAPresent | ユーザーログイン時に 多要素認証 (MFA) を使用するかどうかを指定します。 | true/false |
acs:CurrentTime | 指定されたオブジェクトにアクセスできる時間を指定します。 | ISO 8601 標準で時間を指定します。 |
システムポリシー
DataHub は、RAM ユーザーにアタッチできるシステムポリシーを提供します。ニーズに基づいてシステムポリシーを指定できます。
AliyunDataHubFullAccess
このポリシーは、DataHub に対するすべての権限を RAM ユーザーに付与します。ほとんどの場合、このポリシーは DataHub のリソースを管理するために使用されます。
AliyunDataHubReadOnlyAccess
このポリシーは、DataHub に対する読み取り専用権限を RAM ユーザーに付与するため、RAM ユーザーは DataHub のすべてのリソースに関する情報をクエリできます。たとえば、このポリシーを使用して、プロジェクトに関する情報のクエリ、プロジェクトリストの表示、またはデータの読み取りを行うことができます。ただし、このポリシーを使用してデータを更新、作成、または書き込むことはできません。
AliyunDataHubSubscribeAccess
このポリシーは、RAM ユーザーに DataHub のデータにサブスクライブする権限を付与します。このポリシーは、GetTopic、ListShard、GetRecords、およびサブスクリプションとオフセットに関連するすべての操作を含む、データの読み取りに関連する API 操作のみを呼び出すために使用できます。
AliyunDataHubPublishAccess
このポリシーは、RAM ユーザーに DataHub にデータを公開する権限を付与します。このポリシーは、GetTopic、ListShard、PutRecords を含む、データの書き込みに関連する API 操作のみを呼び出すために使用できます。
カスタムポリシー
DataHub によって提供されるシステムポリシーが要件を満たしていない場合は、カスタムポリシーを作成できます。カスタムポリシーを作成するには、次の操作を実行します。Alibaba Cloud アカウントを使用して RAM コンソールにログインします。左側のナビゲーションウィンドウで、[権限] > [ポリシー] を選択します。[ポリシー] ページで、[ポリシーの作成] をクリックします。カスタムポリシーの例:
DataHub コンソールでアクセス可能なプロジェクトを表示する
// RAM ユーザーが DataHub コンソールでアクセス権限を持つプロジェクトを表示できるようにするには、次の構成を statement ブロックに追加します。
// DataHub コンソールでアクセス可能なプロジェクトを表示するには、ListProject 操作と GetProject 操作を呼び出す権限が必要です。
{
"Action": ["dhs:ListProject","dhs:GetProject"],
"Resource": "acs:dhs:*:*:projects/*",
"Effect": "Allow"
}DataHub コンソールでトピックを作成する
// DataHub コンソールでプロジェクトのトピックを表示するには、ListTopic 操作と GetTopic 操作を呼び出す権限が必要です。
// RAM ユーザーに DataHub コンソールで "test" という名前のプロジェクトにトピックを作成する権限を付与するには、次の構成を使用します。
{
"Version": "1",
"Statement": [
{
"Action": ["dhs:ListProject", "dhs:GetProject"],
"Resource": "acs:dhs:*:*:projects/*",
"Effect": "Allow"
},
{
"Action": ["dhs:ListTopic", "dhs:GetTopic", "dhs:CreateTopic"],
"Resource": "acs:dhs:*:*:projects/test/topics/*",
"Effect": "Allow"
}
]
}その他のカスタムポリシー
// 指定されたプロジェクトのトピックに関する情報をクエリする権限を RAM ユーザーに付与するカスタムポリシーの例。
{
"Version": "1",
"Statement": [
{
"Action": ["dhs:ListTopic", "dhs:GetTopic"],
"Resource": "acs:dhs:cn-hangzhou:12121312:projects/foo/topics/*",
"Effect": "Allow"
}
]
}
// "foo" という名前のプロジェクトのトピックへのサブスクリプションに対するすべての権限を RAM ユーザーに付与するカスタムポリシーの例。
{
"Version": "1",
"Statement": [
{
"Action": ["dhs:*Subscription"],
"Resource": "acs:dhs:cn-hangzhou:*:projects/foo/topics/*/subscriptions/*",
"Effect": "Allow"
}
]
}
// "foo" という名前のプロジェクトのトピックへのサブスクリプションに関する情報をクエリする権限を RAM ユーザーに付与するカスタムポリシーの例。
{
"Version": "1",
"Statement": [
{
"Action": ["dhs:ListSubscription"],
"Resource": "acs:dhs:cn-hangzhou:*:projects/foo/topics/*/subscriptions/*",
"Effect": "Allow"
}
]
}
// "foo" という名前のプロジェクトのトピック t1 への ID が "14985645198374IoCK" のサブスクリプションのオフセットをコミットする権限を RAM ユーザーに付与するカスタムポリシーの例。
{
"Version": "1",
"Statement": [
{
"Action": ["dhs:GetSubscription"],
"Resource": "acs:dhs:cn-hangzhou:*:projects/foo/topics/t1/subscriptions/14985645198374IoCK",
"Effect": "Allow"
}
]
}
// 指定されたトピックのシャードを分割またはマージする権限を RAM ユーザーに付与するカスタムポリシーの例。使用可能な操作は、ListShard、SplitShard、および MergeShard です。
{
"Version": "1",
"Statement": [
{
"Action": ["dhs:*Shard"],
"Resource": "acs:dhs:cn-hangzhou:12121312:projects/foo/topics/bar",
"Effect": "Allow"
}
]
}