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

Resource Access Management:RAMを使用してアプリケーションにAlibaba Cloudリソースへのアクセスを許可する

最終更新日:Oct 31, 2024

このトピックでは、Resource Access Management (RAM) ロールのSecurity Token Service (STS) トークンを使用して、アプリケーションにAlibaba Cloudリソースへのアクセスを許可する方法について説明します。

背景情報

企業がElastic Compute Service (ECS) インスタンスを購入し、これらのECSインスタンスにアプリケーションをデプロイしたいと考えています。 アプリケーションは、他のAlibaba Cloudサービスのオペレーションを呼び出すためにAccessKeyペアを使用する必要があります。

この場合、企業は次のいずれかの方法を使用できます。

  • AccessKeyペアをアプリケーションコードに含めます。

  • AccessKeyペアをアプリケーションの設定ファイルに保存します。

ただし、上記の方法を使用すると、次の問題が発生する可能性があります。

  • AccessKeyペアの開示: AccessKeyペアがECSインスタンスに平文で保存されている場合、スナップショットとイメージが共有された後、またはイメージからECSインスタンスが作成された後に、AccessKeyペアが開示される可能性があります。

  • 複雑なO&M: AccessKeyペアはECSインスタンスに保存されます。 AccessKeyペアのローテーションまたはユーザーIDの変更によりAccessKeyペアが変更された場合、すべてのECSインスタンスとイメージを更新して再デプロイする必要があります。 これにより、ECSインスタンスとイメージの管理が難しくなります。

解決策

上記の問題を解決するために、企業はRAMを使用してECSインスタンスの権限を管理できます。 RAMは、特定のポリシーが付与されたRAMロールを各ECSインスタンスに割り当てることができるリソースアクセス制御サービスです。 アプリケーションは、特定のRAMロールのSTSトークンを使用してAlibaba Cloud操作を呼び出すことができます。

手順

  1. エンタープライズは、MyApplicationRoleという名前のRAMロールを作成します。

    説明

    Alibaba Cloud Serviceが信頼できるエンティティとして選択され、Elastic Compute Serviceが信頼できるサービスとして選択されます。 これにより、ECSはRAMロールを引き受け、Alibaba Cloudリソースにアクセスできます。

    詳細については、「信頼できるAlibaba CloudサービスのRAMロールの作成」をご参照ください。

  2. エンタープライズは、必要なポリシーをRAMロールにアタッチします。

    詳細については、「RAMロールへの権限の付与」をご参照ください。

    説明

    STSトークンが必要な権限を付与できない場合、企業はビジネス要件に基づいてRAMロールにポリシーをアタッチできます。 ポリシーがアタッチされると、STSトークンにアタッチされている権限は、特定のECSインスタンスを再起動する必要なく、すぐに有効になります。

  3. エンタープライズはAlibaba Cloudアカウントを使用してRAMユーザーを作成します。

    詳細については、「RAM ユーザーの作成」をご参照ください。

  4. エンタープライズは、必要なポリシーをRAMユーザーにアタッチします。

    • RAMユーザーが管理者と同じ責任を持つ場合、AdministratorAccessポリシーをRAMユーザーにアタッチする必要があります。

    • RAMユーザーが管理者と異なる責任を持つ場合、企業はRAMコンソールで次のカスタムポリシーを作成し、そのポリシーをRAMユーザーにアタッチする必要があります。

      {
         "Statement": [
          {
            "Effect": "Allow",
            "Action": "ram:PassRole",
            "Resource": "acs:ram:*:*:role/MyApplicationRole" //Replace MyApplicationRole with the name of the RAM role.
          }
        ],
        "Version": "1"
      }                
      説明
      • ECSインスタンスのRAMロールを設定できるのは、許可されたRAMユーザーのみです。 これにより、RAMロールの悪用が防止されます。

      • ECSインスタンスのみを管理できるRAMユーザーがECSインスタンスの作成とRAMロールの設定を試みると、ECSはRAMユーザーがramロールに対してRAM: PassRole操作を実行できるかどうかを確認します。 RAMユーザーが許可されていない場合、ECSインスタンスの作成に失敗します。

    詳細については、「RAM ユーザーへの権限の付与」をご参照ください。

  5. ステップ3で作成されたRAMユーザーは、ステップ1で作成されたRAMロールを特定のECSインスタンスに割り当てます。

  6. ECSは、ECSインスタンスのメタデータにSTSトークンを含め、そのメタデータをECSインスタンスにデプロイされているアプリケーションに送信します。

    • Linuxシステムでは、アプリケーションはインスタンスメタデータを照会して、STSトークンとその有効期間を取得できます。 詳細については、「インスタンスRAMロールを使用した他のAlibaba Cloudリソースへのアクセス」をご参照ください。

      リクエストのサンプル

      curl http://100.100.100.200/latest/meta-data/ram/security-credentials/MyApplicationRole

      レスポンスの例

      {
          "AccessKeyId": "STS.J8XXXXXXXXXX4",
          "AccessKeySecret": "9PjfXXXXXXXXXBf2XAW",
          "Expiration": "2017-06-09T09:17:19Z",
          "SecurityToken": "CAIXXXXXXXXXXXwmBkleCTkyI+",
          "LastUpdated": "2017-06-09T08:17:19Z",
          "Code": "Success"
      }
    • アプリケーションがAlibaba Cloud SDKを使用している場合、SDKはECSインスタンスメタデータからRAMロールのSTSトークンを自動的に取得できます。 SDKでは、AccessKeyペア関連の設定は必要ありません。

      説明

      ほとんどの場合、STSトークンは1時間有効です。 STSトークンが有効な場合、アプリケーションはAlibaba Cloud操作を呼び出すことができます。 STSトークンの有効期限が切れる前に、トークンはECSによって更新されます。

  7. アプリケーションはSTSトークンを使用してAlibaba Cloud操作を呼び出します。

説明

Function ComputeやMaxComputeなどの他のAlibaba Cloudサービスにデプロイされたアプリケーションは、RAMロールのSTSトークンを使用してAlibaba Cloud操作を呼び出すこともできます。