Resource Access Management (RAM) を使用すると、RAM ユーザーを使用して権限を委任できます。ビジネスニーズに基づいて、RAM ユーザーにさまざまな権限を付与できます。これにより、Alibaba Cloud アカウントの AccessKey が漏洩することによって生じる可能性のあるセキュリティリスクを回避できます。
背景情報
A 社は ApsaraMQ for RabbitMQ サービスを有効にしました。同社では、従業員がインスタンス、Vhost、キュー、Exchange などの ApsaraMQ for RabbitMQ サービスのリソースを管理する必要があります。従業員は職務内容が異なるため、必要となる権限も異なります。A 社の要件は次のとおりです。
セキュリティや信頼性の理由から、同社は Alibaba Cloud アカウントの AccessKey を従業員と直接共有したくありません。代わりに、従業員ごとに個別のユーザーアカウントを作成したいと考えています。
ユーザーは、付与された権限の範囲内でのみリソースを管理できます。すべてのリソース使用量は、個々のユーザーアカウントではなく、同社の Alibaba Cloud アカウントに請求されます。
同社は、いつでもユーザーの権限を取り消したり、ユーザーアカウントを削除したりできます。
ステップ 1: RAM ユーザーの作成
従業員用の RAM ユーザーを作成するには、A 社の Alibaba Cloud アカウントで RAM コンソールにログインします。
操作手順
コンソール
-
Alibaba Cloud アカウント (root ユーザー) または管理者権限を持つ RAM ユーザー (
AliyunRAMFullAccessポリシーがアタッチされているユーザー) を使用して、RAM コンソールにサインインします。 -
左側のナビゲーションウィンドウで、 を選択します。
-
ユーザー ページで、ユーザーの作成 をクリックします。
-
ユーザーの作成 ページの ユーザーアカウント情報 セクションで、ユーザーの基本情報を設定します。
-
ログイン名 (必須):最大 64 文字です。英字、数字、ピリオド (.)、ハイフン (-)、アンダースコア (_) を使用できます。
-
表示名 (オプション):名前は最大 128 文字です。
-
Tag (オプション):
をクリックし、タグキーとタグ値を入力してユーザーを分類・管理します。
説明ユーザーの追加 をクリックすると、複数の RAM ユーザーを一括で作成できます。
-
-
アクセスモード セクションで、ユーザータイプに基づいてアクセスモードを選択します。
重要-
セキュリティのベストプラクティスとして、人間のコンソールアクセスとアプリケーションのプログラムによるアクセスを分離するために、ユーザーごとに 1 つのアクセスモードのみを選択してください。
-
AccessKey ペアが漏洩すると、アカウントが危険にさらされます。リスクを軽減するために、代わりに Security Token Service (STS) トークン (一時的な認証情報) を使用してください。Alibaba Cloud API を呼び出すためのアクセス認証情報の使用に関するベストプラクティスをご参照ください。
コンソールアクセス
コンソールへのアクセス を選択します。
-
ログインパスワードの設定:自動生成またはカスタムパスワードを設定します。カスタムパスワードは、設定された複雑性の要件を満たす必要があります。RAM ユーザーのパスワードポリシーを設定するをご参照ください。
-
パスワードのリセット:次回のサインイン時にユーザーがパスワードをリセットする必要があるかどうかを指定します。
-
MFA の有効化:デフォルトでは、すべてのユーザーに多要素認証 (MFA) が要求されます。この設定を変更するには、RAM ユーザーのセキュリティ設定を管理するをご参照ください。ユーザーは最初のサインイン時に MFA デバイスをバインドする必要があります。MFA デバイスをバインドするをご参照ください。
プログラムによるアクセス
永続的な AccessKey を使用してアクセス を選択します。
システムは、RAM ユーザーの AccessKey ID と AccessKey Secret を自動的に作成します。
重要AccessKey Secret は作成時にのみ表示され、後から取得することはできません。AccessKey Secret を直ちにダウンロードまたはコピーして保存する必要があります。AccessKey ペアが漏洩すると、アカウント配下のすべてのリソースが危険にさらされます。AccessKey ペアの作成をご参照ください。
-
OpenAPI
コンソールアクセス用の RAM ユーザーの作成
-
GetDefaultDomain を呼び出して、アカウントのデフォルト ログイン サフィックスを取得します。フォーマットは
<AccountAlias>.onaliyun.comです。 -
CreateUser 操作を呼び出して RAM ユーザーを作成します。次のパラメーターが必要です:
-
UserPrincipalName: RAM ユーザーのログイン名です。フォーマットは<username>@<AccountAlias>.onaliyun.comで、<username>は RAM ユーザー名、<AccountAlias>.onaliyun.comはデフォルトのログインサフィックスを示します。 -
DisplayName: RAM ユーザーの表示名。上記の<username>とは異なる場合があります。
-
-
CreateLoginProfile 操作を呼び出してログインプロファイルを作成し、アクセスモードと MFA を設定します。推奨設定:
-
UserPrincipalName:前のステップで作成されたユーザー。 -
パスワード: アカウントのパスワード強度要件に従って設定します。GetPasswordPolicy を呼び出して、現在のパスワードポリシーを照会します。 -
MFABindRequired: RAM ユーザーに多要素認証 (MFA) を要求するには、trueに設定します。 -
Status: コンソールへのパスワードログインを有効または無効にします。デフォルト値:Active。
-
プログラムによるアクセス用の RAM ユーザーの作成
-
GetDefaultDomain を呼び出して、アカウントのデフォルト ログイン サフィックスを取得します。サフィックスは
<AccountAlias>.onaliyun.comのフォーマットです。 -
CreateUser 操作を呼び出して RAM ユーザーを作成します。次のパラメーターが必要です:
-
UserPrincipalName:<username>@<AccountAlias>.onaliyun.comフォーマットの RAM ユーザーのログイン名です。ここで、<username>は RAM ユーザー名、<AccountAlias>.onaliyun.comはデフォルトのログインサフィックスです。 -
DisplayName: RAM ユーザーの表示名。上記の<username>とは異なる場合があります。
-
-
AccessKey ペア (AccessKey) を作成するには、CreateAccessKey 操作を呼び出し、前のステップで作成したユーザーの
UserPrincipalNameのみを渡します。重要CreateAccessKeyの応答には、AccessKeyId と AccessKeySecret が含まれています。AccessKeySecret は一度しか表示されず、後で取得することはできません。すぐに保存してください。漏洩した AccessKey は、アカウント内のすべてのリソースを危険にさらします。詳細については、「AccessKey を作成する」をご参照ください。
ステップ 2: RAM ユーザーへの権限付与
RAM ユーザーごとに異なる権限を付与します。
RAM 管理者として RAM コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
目的の RAM ユーザーを見つけ、操作 列の ポリシーのアタッチ をクリックします。
権限の付与 パネルで、RAM ユーザーに権限を付与します。
リソース範囲 を選択します。
Account:権限は現在の Alibaba Cloud アカウントに適用されます。
ResourceGroup:権限は指定されたリソースグループに適用されます。
説明リソースグループの権限付与は、クラウドサービスがリソースグループをサポートしている場合にのみ有効です。詳細については、「リソースグループをサポートするクラウドサービス」をご参照ください。
プリンシパル を指定します。
プリンシパルは、権限を付与する RAM ユーザーです。
ポリシー を選択します。
ポリシーは権限のコレクションです。ポリシーには 2 種類あります:
システムポリシー:Alibaba Cloud によって作成および保守されます。これらのポリシーは使用できますが、変更はできません。詳細については、「RAM と連携するサービス」をご参照ください。
カスタムポリシー:これらのポリシーは作成、更新、削除が可能です。詳細については、「カスタムポリシーの作成」をご参照ください。
インスタンス、Vhost、キューなどの ApsaraMQ for RabbitMQ リソースにきめ細かな権限を設定するには、カスタムポリシーを作成します。以下にカスタムポリシーの JSON の例を示します:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "amqp:*", "Resource": "acs:amqp:*:*:instance/<InstanceID>/vhost/<VhostName>" } ] }<InstanceID>を実際のインスタンス ID に、<VhostName>を実際の Vhost 名に置き換えます。Resourceフィールドは、次の粒度レベルをサポートしています。インスタンスレベル:
acs:amqp:*:*:instance/<InstanceID>Vhost レベル:
acs:amqp:*:*:instance/<InstanceID>/vhost/<VhostName>キューレベル:
acs:amqp:*:*:instance/<InstanceID>/vhost/<VhostName>/queue/<QueueName>
説明システムは、AdministratorAccess や AliyunRAMFullAccess などのリスクの高いシステムポリシーを自動的に識別します。権限を付与する際は、不要なリスクの高いポリシーを付与しないようにしてください。
トラブルシューティング:RAM 権限の不足
ApsaraMQ for RabbitMQ への接続またはメッセージの消費時に権限関連のエラーが発生した場合は、以下を確認してください:
BrokerUnreachableException または InstanceNotServing (.NET SDK): .NET SDK クライアントから
BrokerUnreachableExceptionまたはInstanceNotServingが報告され、ネットワーク接続が正常であることが確認された場合は、RAM ユーザーにターゲットインスタンスと Vhost に対する操作権限があるかどうかを確認してください。カスタムポリシーを更新して、関連リソースにamqp:*権限を付与してください。AccessDeniedByRamPolicy (遅延キューの消費): 遅延キューの消費が中断されたり、メッセージが蓄積されたりしてエラー
AccessDeniedByRamPolicyが報告された場合は、RAM ユーザーがターゲットインスタンス、 Vhost、および特定のキュー (たとえば、event_task_result_queryとevent_task_status) に対する操作権限を持っているかどうかを確認してください。カスタムポリシーのResourceフィールドを更新して、該当するキューを含めてください。
権限の付与 をクリックします。
無効にする をクリックします。
次のステップ
RAM ユーザーは、次の方法で ApsaraMQ for RabbitMQ にアクセスできます。
コンソール
ブラウザで RAM ユーザーログインページ を開きます。
RAM ユーザーログイン ページで、RAM ユーザー名を入力し、次へ をクリックし、パスワードを入力してから ログイン をクリックします。
説明RAM ユーザー名は <$username>@<$AccountAlias> または <$username>@<$AccountAlias>.onaliyun.com の形式である必要があります。<$AccountAlias> はアカウントエイリアスです。アカウントエイリアスが設定されていない場合、デフォルトで Alibaba Cloud アカウントの ID が使用されます。
API
コード内で RAM ユーザーの AccessKey ID と AccessKey Secret を使用して API を呼び出し、ApsaraMQ for RabbitMQ にアクセスします。