操作シナリオ
Tencent Cloudの実際の使用において、ABACの権限付与ポリシーを通じて、Tagを使用して権限を定義できます。TagをCAMサブユーザー、ロール、および具体的なクラウドリソースに紐付け、その後、権限ポリシーを定義できます。これらのポリシーはTag条件キーを使用して、リクエストアイデンティティのTagに基づいて権限を付与します。Tagを使用してTencent Cloudリソースへのアクセスを制御する場合、権限付与ポリシーに少ない変更を加えることで、チームとリソースの変更を実現でき、操作がより柔軟になります。
本章節では、従業員のためにCAMでTag付きのCAMロールを作成する方法を詳細に説明します。また、ロールの属性を引き受けることにより、そのTagと一致するリソースへのアクセス権限ポリシーを設定することをサポートします。従業員がそのロールを介してTencent Cloudにリクエストを送信する場合、引き受けたロールのTagとリソースのTagが一致するかどうかに基づいて権限を付与し、従業員がその仕事に必要なリソースのみを閲覧または操作できるようにします。
使用例
ゲーム会社Aにおいて、webpageとappという2つのプロジェクトがあると仮定します。従業員mはwebpageの開発担当、従業員nはappの開発担当です。権限ポリシーを作成する際には、異なるチームの従業員が各自の業務に必要なリソースにアクセスできることを保証するとともに、会社の成長に伴う今後の拡張性を考慮する必要があります。
リソースTagとCAMロールTagを使用することで、ABACポリシーをサポートする製品向けの権限付与ポリシーを作成できます。従業員がフェデレーテッドアイデンティティを介してTencent Cloudにアクセスする場合、その属性はTencent Cloud内のロールTagに適用されます。その後、ABACを使用してこれらの属性に基づくアクセスを許可または拒否できます。
説明
有効条件の概要を通じて、権限ポリシーでサポートされているタグ条件キーを確認します。 上述のプロジェクトとチームに基づき、以下のTag定義を行います。
game-project = web(webプロジェクトに対応)
game-project = app(appプロジェクトに対応)
web = dev(webプロジェクト開発者に対応)
app = dev(appプロジェクトの開発者に対応)
game=dev(web/appプロジェクト開発者に対応)
実装原理
1. 従業員はCAMユーザークレデンシャルを使用してログインし、その後、自身のチームおよびプロジェクトのCAMロールを引き受けます。
2. 同じ職種のロールに同一のポリシーを付与し、Tagに基づいて操作を許可または拒否することを実現します。
検証シナリオ
2台のCVM ins-78qewdr8(Tag game-project:app)と ins-7txjj4a6(Tag game-project:web)があると仮定します。それぞれappプロジェクトとwebpageプロジェクトに属しています。
検証ポイント1:異なるプロジェクトの従業員が異なるCAMサブユーザーでログインした後、各従業員が自身の所属プロジェクト配下のCVMのみにアクセスできるようにする方法を検証します。
検証ポイント2:従業員のポジション変更を想定し、従業員nもプロジェクトwebpageの権限が必要な場合、権限を迅速に調整する方法を検証します。
検証ポイント3:会社が新たにH5クラスのプロジェクトを追加した場合、従業員に新規プロジェクトの権限を迅速に付与する方法。
操作手順
ステップ1: テスト用CAMサブユーザーを作成する
1. access-assume-roleという名前のカスタムポリシーを作成し、そのポリシー内容は「引き受けるアイデンティティのTagがロールのTagと一致する場合、ABACロールを引き受けることを許可する」です。
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": [
"sts:AssumeRole"
],
"resource": "*",
"condition": {
"for_any_value:string_equal": {
"qcs:resource_tag": [
"game&${qcs:principal_tag_value}"
]
}
}
},
{
"effect": "allow",
"action": [
"cam:ListUserTags",
"cam:ListLoginRoles"
],
"resource": [
"*"
]
}
]
}
2. CAMサブユーザー m-developer と n-developer を作成し、サブユーザーに access-assume-role の権限付与ポリシーを紐付け、サブユーザーに下記のTagを紐付けます。
|
m-developer | web=dev |
n-developer | app=dev |
ステップ2: ABACポリシーを作成する
1. access-resource-projectという名前のカスタムポリシーを作成します(例:cvm製品)。ポリシー内容は以下の通りです:
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": "cvm:*",
"resource": "*",
"condition": {
"for_any_value:string_equal": {
"qcs:request_tag": [
"game-project&${qcs:principal_tag_key}"
]
}
}
},
{
"effect": "allow",
"action": "cvm:*",
"resource": "*",
"condition": {
"for_any_value:string_equal": {
"qcs:resource_tag": [
"game-project&${qcs:principal_tag_key}"
]
}
}
},
{
"effect": "allow",
"action": [
"vpc:DescribeVpcEx",
"vpc:DescribeSubnetEx",
"vpc:DescribeNetworkInterfaces",
"cvm:DescribeDiskSecurityConfigurations",
"cvm:DescribeCbsStorages",
"tag:DescribeTagKeys",
"tag:DescribeTagValues"
],
"resource": [
"*"
]
}
]
}
game-project と ${qcs:principal_tag_key} Tag に紐付けられたキーとバリューの値を関連付け、プロジェクトと特定のタグキーに関連付けられた数値を特定します。
2. ロール「access-developer-role」を作成し、上記ポリシーを関連付けて、下記のTagを紐付けます。
説明:
CAMロールを作成する詳細な操作については、ロールの作成を参照してください。 |
access-developer-role | game=dev |
ステップ3:シナリオ検証
検証ポイント1:異なるサブユーザーでログイン後、対応するプロジェクト配下のCVMにのみアクセス可能
1. サブユーザー m-developer を使用して Tencent Cloudコンソール にログインし、コンソール右上のアカウント下にあるロールの切り替えをクリックします。
2. ロール切り替えページで、アプリケーション選択にweb(サブユーザー m-developerのTag value)を選択し、ロール選択にaccess-developer-roleを選択して、ロールの切り替えをクリックします。
3. ロールとしてTencent Cloudコンソールにログインし、CVMインスタンスページに進みます。
CVM製品コンソールで、ins-7txjj4a6(Tag game-project:web)のみ閲覧できる場合、予想通りです。
4. 身份を切り替え、サブユーザー n-developer を使用して Tencent Cloudコンソール にログインし、ログイン後ロールを切り替え、アプリケーション選択で app を選択し、ロール選択で access-developer-role を選択し、表示名は n-developer-app となり、ロールの切り替えをクリックします。
5. ロールとしてTencent Cloudコンソールにアクセスし、CVMインスタンスページに進みます。
CVM製品コンソールで、CVMインスタンス ins-78qewdr8(Tag game-project:app)のみ閲覧できる場合、予想通りです。
検証ポイント2:ポジション変更を仮定し、従業員nもプロジェクトwebpageの権限が必要な場合の設定方法
現在のシナリオでは、CAMコンソールのユーザー詳細で、従業員nに対応するCAMサブユーザーn-developerにTag app:webを追加するだけで済みます。
2. ロール切り替えページで、アプリケーション選択にweb、ロール選択にaccess-developer-role、エイリアスをn-developer-webと入力し、ロールの切り替えをクリックします。
3. ロールとしてTencent Cloudコンソールにログインし、CVMインスタンスページに進みます。
CVM製品コンソールで、CVMインスタンス ins-7txjj4a6(Tag game-project:web)のみ閲覧できる場合、予想通りです。
検証ポイント3:会社が新たにH5クラスのプロジェクトを追加した場合の権限ポリシー調整方法
会社がH5プロジェクトを新規追加した後、H5プロジェクトの開発権限を追加する必要がある場合、ポリシー自体の変更は必要なく、以下の操作のみ必要です:
1. H5プロジェクトの開発担当メンバー向けに新しいサブユーザーを作成します。
2. サブユーザーにH5プロジェクトに対応するTagを紐付け、access-assume-roleポリシーを関連付ければよいです。