RAMユーザーとしてTablestoreのリソースにアクセスするには、事前にRAMユーザーに権限を付与する必要があります。Tablestore このトピックでは、RAMポリシーを使用して、Tablestoreリソースに対する権限をRAMユーザーに付与する方法について説明します。
背景情報
Alibaba Cloudでは、RAMとSecurity Token Service (STS)を使用して権限を管理できます。Tablestoreに対するさまざまな権限をRAMユーザーに付与したり、Tablestoreへのアクセスに使用できる一時的なアクセストークンを作成したりできます。RAMとSTSにより、権限管理がより柔軟かつ安全になります。
デフォルトでは、Tablestoreの以下のシステムポリシーがRAMに作成されます:AliyunOTSFullAccess、AliyunOTSReadOnlyAccess、およびAliyunOTSWriteOnlyAccess。ビジネス要件に基づいて、これらのシステムポリシーをRAMユーザーにアタッチできます。
よりきめ細かい権限管理を実行する場合は、カスタムポリシーを作成し、そのポリシーをRAMユーザーにアタッチできます。
RAMユーザーに一時的なアクセス許可を付与する場合は、STSトークンを使用できます。
システムポリシーを使用する
RAMユーザーがない場合は、RAMユーザーを作成します。詳細については、RAMユーザーの作成を参照してください。
RAMユーザーに権限を付与します。詳細については、RAMユーザーへの権限の付与を参照してください。
インスタンスの作成権限など、Tablestoreに対するすべての権限をRAMユーザーに付与するには、AliyunOTSFullAccessポリシーをRAMユーザーにアタッチします。
テーブルからデータを読み取る権限など、Tablestoreに対する読み取り専用権限をRAMユーザーに付与するには、AliyunOTSReadOnlyAccessポリシーをRAMユーザーにアタッチします。
テーブルを作成する権限など、Tablestoreに対する書き込み専用権限をRAMユーザーに付与するには、AliyunOTSWriteOnlyAccessポリシーをRAMユーザーにアタッチします。
カスタムポリシーを使用する
RAMユーザーがない場合は、RAMユーザーを作成します。詳細については、RAMユーザーの作成を参照してください。
カスタムポリシーを作成します。詳細については、カスタムポリシーの作成を参照してください。
カスタムポリシーの設定方法の詳細については、カスタムポリシーの設定を参照してください。
カスタムポリシーをRAMユーザーにアタッチします。詳細については、RAMユーザーへの権限の付与を参照してください。
STSトークンを使用する
一時的なロールを作成し、そのロールに権限を付与します。
信頼できるAlibaba CloudアカウントのRAMロールを作成します。詳細については、信頼できるAlibaba CloudアカウントのRAMロールの作成を参照してください。
この例では、
ramtestappreadonly
とramtestappwrite
という2つのロールが作成されます。ramtestappreadonly
はデータの読み取りに使用され、ramtestappwrite
はファイルのアップロードに使用されます。カスタムポリシーを作成します。詳細については、カスタムポリシーの作成を参照してください。
カスタムポリシーの設定方法の詳細については、カスタムポリシーの設定を参照してください。
この例では、
ram-test-app-readonly
とram-test-app-write
という2つのポリシーが作成されます。ram-test-app-readonly
{ "Statement": [ { "Effect": "Allow", "Action": [ "ots:BatchGet*", // バッチ取得を許可 "ots:Describe*", // 記述を許可 "ots:Get*", // 取得を許可 "ots:List*" // 一覧表示を許可 ], "Resource": [ "acs:ots:*:*:instance/ram-test-app", "acs:ots:*:*:instance/ram-test-app/table*" ] } ], "Version": "1" }
ram-test-app-write
{ "Statement": [ { "Effect": "Allow", "Action": [ "ots:Create*", // 作成を許可 "ots:Insert*", // 挿入を許可 "ots:Put*", // 配置を許可 "ots:Update*", // 更新を許可 "ots:Delete*", // 削除を許可 "ots:BatchWrite*" // バッチ書き込みを許可 ], "Resource": [ "acs:ots:*:*:instance/ram-test-app", "acs:ots:*:*:instance/ram-test-app/table*" ] } ], "Version": "1" }
一時的なロールに権限を付与します。詳細については、RAMロールへの権限の付与を参照してください。
この例では、
ram-test-app-readonly
ポリシーをramtestappreadonly
ロールにアタッチして、Tablestoreに対する読み取り専用権限を付与し、ram-test-app-write
ポリシーをramtestappwrite
ロールにアタッチして、Tablestoreに対する書き込み専用権限を付与します。権限を付与した後、次の図に示すように、ロールのARNを記録します。RAMユーザーは、ARNに基づいてロールを引き受けます。
一時的なアクセス許可を付与します。
RAMユーザーがない場合は、RAMユーザーを作成します。詳細については、RAMユーザーの作成を参照してください。
カスタムポリシーを作成します。詳細については、カスタムポリシーの作成を参照してください。
カスタムポリシーの設定方法の詳細については、カスタムポリシーの設定を参照してください。
この例では、
AliyunSTSAssumeRolePolicy2016011401
とAliyunSTSAssumeRolePolicy2016011402
という2つのポリシーが作成されます。Resource
は一時的なロールのARNを示します。AliyunSTSAssumeRolePolicy2016011401
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", // ロール引き受けを許可 "Resource": "acs:ram:198***237:role/ramtestappreadonly" } ] }
AliyunSTSAssumeRolePolicy2016011402
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", // ロール引き受けを許可 "Resource": "acs:ram:198***237:role/ramtestappwrite" } ] }
RAMユーザーが一時的なロールを引き受けることを許可することで、RAMユーザーに権限を付与します。詳細については、RAMユーザーへの権限の付与を参照してください。
この例では、
AliyunSTSAssumeRolePolicy2016011401
ポリシーとAliyunSTSAssumeRolePolicy2016011402
ポリシーが、ram_test_app
という名前のRAMユーザーにアタッチされます。
RAMロールを引き受けるためのSTSトークンを取得します。詳細については、AssumeRoleを参照してください。
一時的な権限を使用してデータの読み取りと書き込みを行います。
一時的な権限を使用して、さまざまなプログラミング言語のTablestore SDKを呼び出し、Tablestoreにアクセスできます。次の例は、Tablestore SDK for Javaを使用してOTSClientオブジェクトを作成し、STSから取得したパラメーター(AccessKey ID、AccessKeyシークレット、STSトークンなど)を渡す方法を示しています。
OTSClient client = new OTSClient(otsEndpoint, stsAccessKeyId, stsAccessKeySecret, instanceName, stsToken); // STSから取得したパラメータを使用してOTSClientオブジェクトを作成