Alibaba Cloud アカウント(Alibaba Cloud アカウント A)を使用して Resource Access Management (RAM) ロールを作成し、別の Alibaba Cloud アカウント(Alibaba Cloud アカウント B)が RAM ロールをアシュームするように指定し、Alibaba Cloud アカウント A の Simple Log Service リソースに対する特定の権限を RAM ロールに付与できます。その後、Alibaba Cloud アカウント B の RAM ユーザーに AssumeRole 権限を付与できます。そして、Alibaba Cloud アカウント B または指定された RAM ユーザーを使用して Security Token Service (STS) API 操作を呼び出し、一時的なセキュリティ認証情報を取得できます。これらの認証情報には、AccessKey ID、AccessKey シークレット、およびセキュリティトークンが含まれます。このようにして、RAM ユーザーを使用して Simple Log Service API 操作を呼び出し、Simple Log Service リソースにアクセスできます。
ソリューションの概要
企業 A には Alibaba Cloud アカウント A という名前の Alibaba Cloud アカウントがあり、企業 B には Alibaba Cloud アカウント B という名前の Alibaba Cloud アカウントがあります。ビジネスデータまたは外部委託プロジェクトを分離するために、Alibaba Cloud アカウント A のユーザーは、Alibaba Cloud アカウント B に Alibaba Cloud アカウント A の Simple Log Service リソースに対する特定の権限を付与したいと考えています。以下の権限が付与されます。
Alibaba Cloud アカウント B は、Alibaba Cloud アカウント A の Simple Log Service にデータを書き込むことが許可されています。さらに、Alibaba Cloud アカウント B は、コンシューマーグループを使用して Alibaba Cloud アカウント A の Simple Log Service からデータを使用することが許可されています。
Alibaba Cloud アカウント B の RAM ユーザーは、Alibaba Cloud アカウント A の Simple Log Service にデータを書き込むことが許可されています。さらに、RAM ユーザーは、コンシューマーグループを使用して Alibaba Cloud アカウント A の Simple Log Service からデータを使用することが許可されています。
Alibaba Cloud アカウント B は、STS API 操作を呼び出して一時的なセキュリティ認証情報を取得し、その認証情報を使用して Simple Log Service API 操作を呼び出すことが許可されています。詳細については、「STS とは」をご参照ください。
上記の要件を満たすには、次の手順を実行します。
手順 1:Alibaba Cloud アカウント A のユーザーが Alibaba Cloud アカウント B の RAM ロールを作成し、Alibaba Cloud アカウント B に権限を付与する
手順 2:Alibaba Cloud アカウント B のユーザーが user-b RAM ユーザーを作成し、RAM ユーザーに権限を付与する
手順 3:user-b RAM ユーザーが STS から一時的なセキュリティ認証情報を取得して Simple Log Service リソースにアクセスする
手順 1:Alibaba Cloud アカウント A のユーザーが Alibaba Cloud アカウント B の RAM ロールを作成し、Alibaba Cloud アカウント B に権限を付与する
Alibaba Cloud アカウント A のユーザーは、RAM ロールを作成し、Alibaba Cloud アカウント B が RAM ロールをアシュームするように指定し、Alibaba Cloud アカウント A の Simple Log Service リソースに対する特定の権限を RAM ロールに付与します。
RAM コンソールで RAM ロールを作成できます。詳細については、「RAM ユーザーを作成し、RAM ユーザーに Simple Log Service へのアクセスを許可する」をご参照ください。また、RAM の CreateRole API 操作を呼び出して RAM ロールを作成することもできます。詳細については、「CreateRole」をご参照ください。次の例では、コンソールで RAM ロールを作成する方法について説明します。
Alibaba Cloud アカウントを使用して Resource Access Management (RAM) コンソール にログインします。
RAM ロールを作成し、Alibaba Cloud アカウント B が RAM ロールをアシュームするように指定します。詳細については、「信頼できる Alibaba Cloud アカウントの RAM ロールを作成する」をご参照ください。
カスタムポリシーを作成します。[ポリシーの作成] ページの [JSON] タブで、コードエディタの既存のスクリプトを次のポリシードキュメントに置き換えます。詳細については、「JSON タブでカスタムポリシーを作成する」をご参照ください。
Simple Log Service への書き込み権限を付与する
{ "Version": "1", "Statement": [ { "Action": "log:PostLogStoreLogs", "Resource": "*", "Effect": "Allow" } ] }
コンシューマーグループを使用して Simple Log Service からデータをプルする権限を付与する
{ "Version": "1", "Statement": [ { "Action": [ "log:GetCursorOrData", "log:CreateConsumerGroup", "log:ListConsumerGroup", "log:ConsumerGroupUpdateCheckPoint", "log:ConsumerGroupHeartBeat", "log:GetConsumerGroupCheckPoint", "log:UpdateConsumerGroup" ], "Resource": "*", "Effect": "Allow" } ] }
重要上記のポリシーは、Alibaba Cloud アカウント A のすべてのプロジェクトとログストアに対する権限を付与します。特定のプロジェクトとログストアに対する権限を付与する場合は、ポリシーの Resource 要素に次のコードを含めます。
プロジェクトに権限を付与するには、
acs:log::{projectOwnerAliUid}:project/
を使用します。ログストアに権限を付与するには、
acs:log::{projectOwnerAliUid}:project/{projectName}/logstore/{logstoreName}/
を使用します。
詳細については、「リソースリスト」をご参照ください。
作成したカスタムポリシーを RAM ロールにアタッチします。詳細については、「RAM ロールに権限を付与する」をご参照ください。
手順 2:Alibaba Cloud アカウント B のユーザーが user-b RAM ユーザーを作成し、RAM ユーザーに権限を付与する
Alibaba Cloud アカウント B のユーザーは、user-b
RAM ユーザーを作成し、AliyunSTSAssumeRoleAccess
システムポリシーを RAM ユーザーにアタッチします。AliyunSTSAssumeRoleAccess ポリシーは、RAM ユーザーに STS の AssumeRole API 操作を呼び出す権限を付与します。
Alibaba Cloud アカウント B を使用して、RAM コンソール にログインします。
user-b
という名前の RAM ユーザーを作成し、[アクセスモード] セクションで [コンソールアクセス] と [永続 Accesskey を使用してアクセスする] を選択します。詳細については、「RAM ユーザーを作成する」をご参照ください。重要RAM ユーザーの AccessKey シークレットは、AccessKey ペアを作成するときにのみ表示されます。後続の操作で AccessKey シークレットを照会することはできません。したがって、AccessKey シークレットをバックアップする必要があります。
AccessKey ペアは、アプリケーションアクセスのための永続的な認証情報です。Alibaba Cloud アカウントの AccessKey ペアが漏洩した場合、アカウントに属するリソースは潜在的なリスクにさらされます。認証情報の漏洩リスクを防ぐために、Security Token Service (STS) トークンを使用することをお勧めします。詳細については、「API 操作を呼び出すためのアクセス認証情報のベストプラクティス」をご参照ください。
[aliyunstsassumeroleaccess] ポリシーを RAM ユーザーにアタッチします。これにより、RAM ユーザーは RAM ロールをアシュームして Security Token Service (STS) トークンを取得できます。詳細については、「RAM ユーザーに権限を付与する」をご参照ください。
手順 3:user-b
RAM ユーザーが STS トークンを取得して Simple Log Service リソースにアクセスする
AssumeRole API 操作を呼び出して、一時的な AccessKey ペアとセキュリティトークンを取得します。詳細については、「AssumeRole」をご参照ください。
この操作は、次の方法で呼び出すことができます。
STS SDK を使用して操作を呼び出します。詳細については、「STS SDK の概要」をご参照ください。
Simple Log Service の API 操作を呼び出します。詳細については、「Simple Log Service SDK の概要」をご参照ください。