すべてのプロダクト
Search
ドキュメントセンター

Tablestore:RAM ユーザーの AccessKey ペアを使用してリクエストを開始する

最終更新日:Dec 28, 2024

RAM ユーザーに特定の権限を付与し、RAM ユーザーの AccessKey ペアを使用して、長期間にわたって特定の Tablestore リソースにアクセスできます。Alibaba Cloud アカウントの AccessKey ペアを使用して Tablestore リソースにアクセスするよりも、RAM ユーザーの AccessKey ペアを使用する方が安全です。

ステップ 1: RAM ユーザーを作成する

  1. 管理者権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーを使用して、RAM コンソールにログオンします。

  2. 左側のナビゲーションペインで、ID > ユーザー を選択します。

  3. ユーザーページで、ユーザーの作成をクリックします。image

  4. ユーザーアカウント情報ユーザーの作成ページのセクションで、次のパラメータを設定します。

    • ログオン名: ログオン名は最大 64 文字で、文字、数字、ピリオド(.)、ハイフン(-)、アンダースコア(_) を使用できます。

    • 表示名: 表示名は最大 128 文字です。

    • タグ: editアイコンをクリックし、タグキーとタグ値を入力します。RAM ユーザーに 1 つ以上のタグを追加できます。このようにして、タグに基づいて RAM ユーザーを管理できます。

    説明

    ユーザーを追加をクリックすると、複数の RAM ユーザーを一度に作成できます。

  5. アクセスモードセクションで、Openapi アクセスを選択し、OK をクリックします。

  6. 画面の指示に従ってセキュリティ検証を完了します。

  7. コピーをクリックして、RAM ユーザーの AccessKey ペアを保存します。

    重要

    RAM ユーザーの AccessKey シークレットは、RAM ユーザーの作成時にのみ取得できます。後続の操作で AccessKey シークレットを照会することはできません。AccessKey シークレットを記録し、機密性を保持してください。

ステップ 2: RAM ユーザーに Tablestore の読み取り専用権限を付与する

システムポリシーを使用する

AliyunOTSReadOnlyAccessポリシーを RAM ユーザーにアタッチします。詳細については、RAM ユーザーに権限を付与するを参照してください。

説明
  • RAM ユーザーにインスタンスの作成などのTablestoreの管理を許可するには、AliyunOTSFullAccessポリシーを RAM ユーザーにアタッチします。

  • テーブルからのデータの読み取りなど、Tablestoreへの読み取り専用アクセスを許可するには、AliyunOTSReadOnlyAccessポリシーを RAM ユーザーにアタッチします。

  • データテーブルの作成など、Tablestoreへの書き込み専用アクセスを許可するには、AliyunOTSWriteOnlyAccessポリシーを RAM ユーザーにアタッチします。

カスタムポリシーを使用する

  1. カスタムポリシーを作成します。

    1. 左側のナビゲーションペインで、権限管理 > ポリシー を選択します。

    2. ポリシーページで、ポリシーの作成をクリックします。

    3. ポリシーの作成ページで、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": {}
          }
        ]
      }     
    4. ポリシー情報の編集に進むをクリックします。

    5. 基本情報セクションで、名前RamTestPolicy に設定し、OK をクリックします。

  2. カスタムポリシーを RAM ユーザーにアタッチします。

    1. 左側のナビゲーションペインで、アイデンティティ > ユーザー を選択します。

    2. ユーザーページで、カスタムポリシーをアタッチする RAM ユーザーを見つけます。

    3. ユーザーページで、RAM ユーザーの操作列にある権限の追加をクリックします。

    4. 権限の追加パネルで、ポリシーセクションのドロップダウンリストからカスタムポリシーを選択し、RamTestPolicyポリシーを選択します。

    5. 権限の付与をクリックします。

ステップ 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();
    }
}