Resource Access Management (RAM) ポリシーは、RAM アイデンティティ (ユーザー、ユーザーグループ、またはロール) にアタッチされる権限ポリシーです。RAM ユーザーまたはロールが Tablestore リソースに対して実行できることを制御するには、許可される操作とリソースを指定した RAM ポリシーをアタッチします。
仕組み
RAM ポリシーは、アイデンティティベースの認可を使用します。RAM ユーザー、ユーザーグループ、またはロールにアタッチされたポリシーは、アイデンティティが実行できる操作 (Action)、アクセスできるリソース (Resource)、およびポリシーが適用される条件 (Condition) を指定します。
RAM アイデンティティがリクエストを送信すると、システムは適用可能なすべてのポリシーを次の順序で評価します:
明示的な拒否が優先:いずれかのポリシーにリクエストと一致する Deny ルールが含まれている場合、リクエストは直ちに拒否されます。
明示的な許可の確認:一致する Deny ルールがない場合、一致する Allow ルールがあればリクエストは許可されます。
暗黙の拒否:Deny ルールも Allow ルールも一致しない場合、リクエストはデフォルトで拒否されます。
Tablestore は、2 種類の RAM ポリシーをサポートしています:
システムポリシー:一般的な認可シナリオ向けに Alibaba Cloud によって事前定義されています。これらのポリシーはアタッチできますが、変更はできません。
カスタムポリシー:お客様が作成および管理します。カスタムポリシーを使用すると、リソーススコープ、操作、およびその適用条件をきめ細かく制御できます。
システムポリシーによる権限の付与
Alibaba Cloud が作成するシステムポリシーは、RAM コンソールで直接ユーザーアイデンティティにアタッチできます。以下の手順では、RAM ユーザーを例として使用します。
RAM ユーザーページに移動し、目的のユーザーの操作列で権限付与をクリックします。
検索ボックスに、アタッチするシステムポリシーの名前を入力して選択します。Tablestore は、以下の 3 つのシステムポリシーをサポートしています:
システムポリシー
権限スコープ
Tablestore に対する完全な管理権限。
Tablestore への読み取り専用アクセス。
Tablestore への書き込み専用アクセス。
Grant permissions をクリックして権限設定を完了します。
カスタムポリシーによる権限の付与
カスタムポリシーは、ポリシーの作成と、ユーザーアイデンティティへのアタッチという 2 つのステップで作成・管理します。
ステップ 1:カスタムポリシーの作成
ポリシーページに移動し、ポリシーの作成 をクリックします。
JSON を選択し、エディターに JSON 形式でポリシーを入力します。
以下のポリシー例は、
example-instanceという名前のインスタンスと、そのインスタンス内のすべてのテーブルに対するすべての操作を許可します。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ots:*", "Resource": [ "acs:ots:*:*:instance/example-instance", "acs:ots:*:*:instance/example-instance/table/*" ] } ] }RAM ポリシーには、Version と Statement の 2 つのトップレベル要素が含まれています。
トップレベル要素
説明
Version
ポリシーバージョンは
1に固定されており、変更できません。Statement
ポリシーの本文。1 つ以上の認可または拒否ルールが含まれます。各ルールには、Effect (認可効果)、Action (認可される操作)、Resource (認可されるリソース)、Condition (認可条件) の 4 つのサブ要素が含まれます。詳細については、次の表をご参照ください。
Statement のサブ要素
説明
Effect
ポリシーの効果。有効な値:
AllowまたはDeny。Action
リソースに対して実行される特定の操作。必要に応じて、
ots:プレフィックスを追加し、ワイルドカード*を使用します。Resource
リソーススコープ。 形式は
acs:ots:[region]:[user_id]:instance/[instance_name]/table/[table_name]です。Condition
ポリシーが有効になる条件。
複数の条件を指定した場合、ポリシーが適用されるには、すべての条件を満たす必要があります (論理 AND)。
ポリシーの要素と構文の詳細については、「認可ポリシーの構文と要素」をご参照ください。
OK をクリックし、ポリシー名 を入力し、次に OK をクリックしてカスタムポリシーの作成を完了します。
ステップ 2:ポリシーをユーザーアイデンティティにアタッチ
前のステップで作成したポリシーをユーザーアイデンティティにアタッチします。以下の手順では、RAM ユーザーを例として使用します。
RAM ユーザーページに移動し、対象のユーザーの操作列で権限付与をクリックします。
検索ボックスにカスタムポリシー名を入力し、対象のポリシーを選択します。
Grant permissions をクリックして権限設定を完了します。
一般的な認可シナリオ
以下は、Tablestore での RAM ポリシーの典型的なユースケースです。それぞれについて、完全な JSON ポリシーの例を示します。
シナリオ 1:IP、時刻、プロトコルの複合条件による読み取りおよび書き込み権限の付与
10.10.XX.XX/24 CIDR ブロックのユーザーは、HTTPS 経由で、かつ 2028-01-01 00:00:00 以前である場合に限り、online-01 および online-02 インスタンスとそのすべてのテーブルに対して読み取りと書き込みができます。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ots:BatchGet*",
"ots:BatchWrite*",
"ots:Create*",
"ots:Delete*",
"ots:Get*",
"ots:Insert*",
"ots:Put*",
"ots:Update*"
],
"Resource": [
"acs:ots:*:*:instance/online-01",
"acs:ots:*:*:instance/online-01/table/*",
"acs:ots:*:*:instance/online-02",
"acs:ots:*:*:instance/online-02/table/*"
],
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"10.10.XX.XX/24"
]
},
"DateLessThan": {
"acs:CurrentTime": "2028-01-01T00:00:00+08:00"
},
"Bool": {
"acs:SecureTransport": "true"
}
}
}
]
}シナリオ 2:特定の IP アドレスから特定のインスタンスへの書き込みリクエストの拒否
中国 (北京) リージョンで、名前が online または product で始まるインスタンス内のすべてのテーブルに対し、IP アドレス 10.10.XX.XX からのユーザーの書き込みアクセスを拒否します。このルールは、インスタンス自体に対する操作を制限しません。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ots:Create*",
"ots:Insert*",
"ots:Put*",
"ots:Update*",
"ots:Delete*",
"ots:BatchWrite*"
],
"Resource": [
"acs:ots:cn-beijing:*:instance/online*/table/*",
"acs:ots:cn-beijing:*:instance/product*/table/*"
],
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"10.10.XX.XX"
]
}
}
}
]
}シナリオ 3:RAM ユーザーの管理を特定のインスタンスに限定
RAM ユーザーに対し、指定されたインスタンスのみを管理する権限を付与します。このポリシーには、コンソールのクエリ権限、対象インスタンスに対する完全な操作権限、および CloudMonitor のクエリ権限をそれぞれ付与する 3 つのステートメントが含まれています。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ots:ListInstance",
"ots:ListTagResources"
],
"Resource": "acs:ots:*:*:instance/*"
},
{
"Effect": "Allow",
"Action": "ots:*",
"Resource": [
"acs:ots:*:*:instance/yourInstance",
"acs:ots:*:*:instance/yourInstance/table/*"
]
},
{
"Effect": "Allow",
"Action": "cms:Query*",
"Resource": "*"
}
]
}各ステートメントは、次の表で説明するように特定の役割を果たします。
ポリシー | 説明 |
| Tablestore コンソールの概要ページでは、インスタンスリストとタグリストが読み込まれます。このステートメントは、RAM ユーザーがこれらを読み込むために必要なクエリ権限を付与します。 説明 コンソールを介してインスタンスを管理する RAM ユーザーは、これらの権限を持っている必要があります。 |
| RAM ユーザーに |
| RAM ユーザーに、インスタンスとテーブルのモニタリングデータを表示するための CloudMonitor 権限を付与します。 |