RAM ユーザーに特定の権限を付与し、RAM ユーザーの AccessKey ペアを使用して、長期間にわたって特定の Tablestore リソースにアクセスできます。Alibaba Cloud アカウントの AccessKey ペアを使用して Tablestore リソースにアクセスするよりも、RAM ユーザーの AccessKey ペアを使用する方が安全です。
ステップ 1: RAM ユーザーを作成する
管理者権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーを使用して、RAM コンソールにログオンします。
左側のナビゲーションペインで、 を選択します。
ユーザーページで、ユーザーの作成をクリックします。
ユーザーアカウント情報ユーザーの作成ページのセクションで、次のパラメータを設定します。
ログオン名: ログオン名は最大 64 文字で、文字、数字、ピリオド(.)、ハイフン(-)、アンダースコア(_) を使用できます。
表示名: 表示名は最大 128 文字です。
タグ: アイコンをクリックし、タグキーとタグ値を入力します。RAM ユーザーに 1 つ以上のタグを追加できます。このようにして、タグに基づいて RAM ユーザーを管理できます。
説明ユーザーを追加をクリックすると、複数の RAM ユーザーを一度に作成できます。
アクセスモードセクションで、Openapi アクセスを選択し、OK をクリックします。
画面の指示に従ってセキュリティ検証を完了します。
コピーをクリックして、RAM ユーザーの AccessKey ペアを保存します。
重要RAM ユーザーの AccessKey シークレットは、RAM ユーザーの作成時にのみ取得できます。後続の操作で AccessKey シークレットを照会することはできません。AccessKey シークレットを記録し、機密性を保持してください。
ステップ 2: RAM ユーザーに Tablestore の読み取り専用権限を付与する
システムポリシーを使用する
AliyunOTSReadOnlyAccessポリシーを RAM ユーザーにアタッチします。詳細については、RAM ユーザーに権限を付与するを参照してください。
RAM ユーザーにインスタンスの作成などのTablestoreの管理を許可するには、AliyunOTSFullAccessポリシーを RAM ユーザーにアタッチします。
テーブルからのデータの読み取りなど、Tablestoreへの読み取り専用アクセスを許可するには、AliyunOTSReadOnlyAccessポリシーを RAM ユーザーにアタッチします。
データテーブルの作成など、Tablestoreへの書き込み専用アクセスを許可するには、AliyunOTSWriteOnlyAccessポリシーを RAM ユーザーにアタッチします。
カスタムポリシーを使用する
カスタムポリシーを作成します。
左側のナビゲーションペインで、権限管理 > ポリシー を選択します。
ポリシーページで、ポリシーの作成をクリックします。
ポリシーの作成ページで、JSON をクリックします。コードエディターに次のスクリプトを入力して、ram-test-app インスタンスからデータを読み取る権限を指定します。
警告次の例は参照用です。ユーザーに過剰な権限を付与しないように、要件に基づいてきめ細かい RAM ポリシーを設定する必要があります。きめ細かい RAM ポリシーの設定方法については、カスタムポリシーを作成するを参照してください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ots:BatchGet*", "ots:Describe*", "ots:Get*", "ots:List*", "ots:Consume*", "ots:Search", "ots:ComputeSplitPointsBySize" ], "Resource": [ "acs:ots:*:*:instance/ram-test-app*" ], "Condition": {} } ] }
ポリシー情報の編集に進むをクリックします。
基本情報セクションで、名前を RamTestPolicy に設定し、OK をクリックします。
カスタムポリシーを RAM ユーザーにアタッチします。
左側のナビゲーションペインで、
を選択します。ユーザーページで、カスタムポリシーをアタッチする RAM ユーザーを見つけます。
ユーザーページで、RAM ユーザーの操作列にある権限の追加をクリックします。
権限の追加パネルで、ポリシーセクションのドロップダウンリストからカスタムポリシーを選択し、RamTestPolicyポリシーを選択します。
権限の付与をクリックします。
ステップ 3: RAM ユーザーの AccessKey ペアを使用して、Tablestore インスタンス内のテーブルの名前を照会する
次の Java のサンプルコードは、Tablestore インスタンス内のテーブルの名前を照会する方法の例を示しています。
import com.alicloud.openservices.tablestore.SyncClient;
import com.alicloud.openservices.tablestore.core.ResourceManager;
import com.alicloud.openservices.tablestore.core.auth.CredentialsProviderFactory;
import com.alicloud.openservices.tablestore.core.auth.EnvironmentVariableCredentialsProvider;
import com.alicloud.openservices.tablestore.model.ListTableResponse;
public class RamAccessKeySample {
public static void main(String[] args) {
// Tablestore インスタンスの名前を指定します。
String instanceName = "yourInstance";
// Tablestore インスタンスのエンドポイントを指定します。例: https://yourInstance.cn-hangzhou.ots.aliyuncs.com。
String endPoint = "yourEndpoint";
// アクセスクレデンシャルをプロジェクトコードに保存しないことをお勧めします。そうしないと、アクセスクレデンシャルが漏洩する可能性があります。その結果、アカウント内のすべてのリソースのセキュリティが侵害されます。
// この例では、アクセスクレデンシャルは環境変数から取得されます。サンプルコードを実行する前に、TABLESTORE_ACCESS_KEY_ID および TABLESTORE_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// OTSClient インスタンスを作成します。
SyncClient client = new SyncClient(endPoint, credentialsProvider, instanceName, null, new ResourceManager(null, null));
// テーブルの名前を照会します。
ListTableResponse listTableResponse = client.listTable();
listTableResponse.getTableNames().forEach(System.out::println);
// OTSClient インスタンスをシャットダウンします。
client.shutdown();
}
}