タグを使用すると、チーム所有者や環境などの共通属性に基づいて Function Compute のサービスを分類できます。タグはリソースの検索、集約、および詳細な権限付与をサポートし、どのチームがどのサービスにアクセスできるかを制御できます。
タグの仕組み
タグとサービスリソースの間には多対多の関係があります。
各タグはキーと値のペアで構成されます。
タグは、指定された範囲内のリソースに対して詳細な権限付与を実装するための条件として機能します。
サービス配下のすべてのリソース(バージョン、エイリアス、関数、トリガー)は、そのサービスにアタッチされたタグを継承します。
タグベースの権限付与は、API リクエストでサービスを明示的に指定した場合に適用されます。すべてのバージョンおよびエイリアスが同一のタグメタデータを共有するため、サービスのタグに対する変更は、そのすべてのバージョンおよびエイリアスの権限付与に影響します。
タグ情報はリージョン固有です。あるリージョンで作成されたタグは、他のリージョンでは表示されません。
使用制限
| 項目 | 制限 |
|---|---|
| リソースあたりのタグ数 | 20 |
| タグキーの長さ | 1~64 文字(大文字・小文字を区別する Unicode 文字) |
| タグ値の長さ | 1~128 文字(大文字・小文字を区別する Unicode 文字) |
| タグキーで使用可能な文字 | ASCII 文字、数字、および -\.!@#$%?/^&*)(+={}[\\]",'<>~·`:;|_ |
| タグ値で使用可能な文字 | ASCII 文字、数字、および -\.!@#$%?/^&*)(+={}[\\]",'<>~·`:;|_ |
タグキーは aliyun や acs: で始めてはならず、http:// や https:// を含んではならず、また空欄であってはなりません。タグ値には http:// や https:// を含んではならず、また空欄であってはなりません。
サービスへのタグの追加
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、[サービスと関数] をクリックします。
上部のナビゲーションバーでリージョンを選択し、[サービス] ページで対象のサービスをクリックします。
左側のナビゲーションウィンドウで、[サービスの詳細] をクリックします。
[基本設定] セクションで、[タグ] の横にある
アイコンにポインターを合わせ、[関連付け] をクリックします。[タグの編集] ダイアログボックスで、[キー] と [値] を指定し、[OK] をクリックします。
タグが作成された後、[サービスの詳細] ページの
アイコンにポインターを移動して、タグを表示します。タグを更新または削除するには、画面上の指示に従ってください。
タグに基づくチームの権限付与
タグベースの権限付与を使用して、特定のサービスを管理できる RAM ユーザーを制限できます。以下の例では、開発チームが 5 つのサービスを管理可能であり、運用チームが別の 5 つのサービスを管理可能である状況を示します。各チームは、自チームのサービスのみを表示できます。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
Function Compute で 10 個のサービスが作成済みであること
開発チーム向けの 5 つのサービスに
team:devタグがアタッチ済みであること運用チーム向けの 5 つのサービスに
team:opsタグがアタッチ済みであること
タグのアタッチについては、「サービスへのタグの追加」の手順をご参照ください。
チームと権限の設定
RAM ユーザーの作成 を各チームメンバーに対して実行します。
ユーザーグループの作成 を実行し、
devおよびopsという名前の 2 つのグループを作成します。以下のいずれかの方法で、各ユーザーグループに権限を付与します。
システムポリシー:事前定義済みのシステムポリシーを使用し、それをユーザーグループに付与 します。
カスタムポリシー:各チーム向けにカスタムポリシーを作成し、対応するユーザーグループに付与します。
RAM コンソールで、カスタムポリシーの作成 を実行し、開発チーム向けに
policyForDevTeamという名前のポリシーを作成します。{ "Statement": [ { "Action": "fc:*", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "fc:tag/team": "dev" } } }, { "Action": "fc:ListServices", "Effect": "Allow", "Resource": "*" }, { "Action": "fc:GetResourceTags", "Effect": "Allow", "Resource": "*" } ], "Version": "1" }次に、運用チーム向けに
policyForOpsTeamという名前の第 2 のカスタムポリシーを作成します。{ "Statement": [ { "Action": "fc:*", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "fc:tag/team": "ops" } } }, { "Action": "fc:ListServices", "Effect": "Allow", "Resource": "*" }, { "Action": "fc:GetResourceTags", "Effect": "Allow", "Resource": "*" } ], "Version": "1" }その後、各カスタムポリシーを対応するユーザーグループに付与 します。
権限付与が完了すると、dev グループに所属する RAM ユーザーは team:dev タグが付与されたサービスのみを管理でき、ops グループに所属する RAM ユーザーは team:ops タグが付与されたサービスのみを管理できます。