ポリシー文法
CAMポリシー:
{
"version":"2.0",
"statement":
[
{
"effect":"effect",
"action":["action"],
"resource":["resource"],
"condition": {"key":{"value"}}
}
]
}
バージョンversionは記入必須項目であり、現時点で数値が"2.0"であることのみを認めています。
ステートメント statement は一つか複数の権限の詳細情報を説明することに使われています。当該要素は effect、action、resource,condition 等幾つかのほかの要素の権限又は権限の集合を含んでいます。一つのポリシーには一つのstatement 要素しかありません。
1.1 操作actionは許可する又は拒否する操作を説明することに使われています。操作は API(nameプリフィックスで説明する)又は機能セット(特定APIセットであり、permitプリフィックスで説明する)であってよいです。当該要素は記入必須項目です。
1.2 リソースresource は授権するの具体的なデータを説明することに使われています。リソースは6段階式で説明されます。各製品のリソース定義の詳細は異なっています。リソースの指定方法については、作成したリソース宣言に対応する製品ドキュメントをご参照ください。当該要素は記入必須項目です。
1.3 発効条件condition はポリシー発効の制約条件を説明しています。条件はオペレーター、操作キーと操作値から構成されています。条件値は時間、IPアドレス等の情報を含んでいます。一部のサービスは、条件に対しほかの値を指定することを認めています。当該要素は記入必須項目ではありません。
1.4 影響effect は宣言による結果が「許可」であるか「明示的な拒否」であるかを説明しています。それにallow (許可)とdeny (明示的な拒否)という2種類が含まれています。当該要素は記入必須項目です。
CVMの操作
CAポリシーステートメントでは、顧客はCAM対応のいかなるサービスから任意のAPI操作を指定することができます。CVMに対しては、name/cvm:をプレフィックスとするAPIを利用してください。例えば name/cvm:RunInstances 又は name/cvm:ResetInstancesPasswordです。
一つのステートメントで複数の操作を指定したい場合は、コンマで区切ってください。下記の通りです。
"action":["name/cvm:action1","name/cvm:action2"]
ワイルドカードで複数の操作を指定することも可能です。例えば、先頭が単語" Describe "であるすべての操作を指定することが可能です、下記の通りです。
"action":["name/cvm:Describe*"]
CVMにおけるすべての操作を指定したい場合は、 * ワイルドカードを使用してください。下記の通りです。
CVMのリソースパス
各CAMポリシーステートメントは自身に適用されるリソースがあります。
リソースパスの一般的な形式は次のとおりです。
qcs:project_id:service_type:region:account:resource
project_id:プロジェクト情報を説明します。CAMの早期ロジックをコンパチブルするためなものだけです。記入する必要がありません。
service_type:製品の略称です、例えば CVMです。
region:リージョン情報です、例えば bjです。
account:リソース所有者のルートアカウント情報です、例えばuin/164256472です。
resource:各製品の具体的なリソース詳細です。例えばinstance/instance_id1 又は instance/*です。
例えば、顧客は特定インスタンス (i-15931881scv4) を使用してステートメントでそれを指定することができます。下記の通りです。
"resource":[ "qcs::cvm:bj:uin/164256472:instance/i-15931881scv4"]
ワイルドカードで特定アカウントのすべてのインスタンスを指定することができます。下記の通りです。
"resource":[ "qcs::cvm:bj:uin/164256472:instance/*"]
すべてのリソースを指定したい場合、或いは特定のAPI操作がリソースレベルの権限をサポートしていない場合、 Resource 要素の中で* ワイルドカードを使ってください。下記の通りです。
一つのコマンドで複数のリソースを同時に指定したい場合は、コンマでそれらを区切ってください。下記は二つのリソースを指定する例です。
"resource":["resource1","resource2"]
下表にはCVMの利用可能なリソース及び対応するリソースの説明方法が示されています。
下表においては、$をプレフィックスとする単語はエイリアスです。
その中に、projectはプロジェクトIDを指しています。
その中に、regionはリージョンを指しています。
その中に、accountはアカウントIDを指しています。
|
| qcs::cvm:$region:$account:instance/$instanceId |
| qcs::cvm:$region:$account:keypair/$keyId |
| qcs::vpc:$region:$account:vpc/$vpcId |
| qcs::vpc:$region:$account:subnet/$subnetId |
| qcs::cvm:$region:$account:systemdisk/* |
| qcs::cvm:$region:$account:image/* |
| qcs::cvm:$region:$account:datadisk/* |
| qcs::cvm:$region:$account:sg/$sgId |
| qcs::cvm:$region:$account:eip/* |
CVMの条件キー
ポリシーステートメントでは、ポリシーの発効時間を制御する条件を選択的に指定することができます。各条件には一つか複数のキー値ペアが含まれています。条件キーは大文字・小文字の区分けをしません。
顧客は複数の条件、或いは単一の条件で複数のキーを指定する場合は、ANDロジック操作によりそれを評価します。
単一の条件で複数の値を持つキーを指定する場合は、ORロジック操作によりそれを評価します。すべての条件にマッチングした場合にのみ、権限を与えます。
下表にはCVMが指定のサービスに使われる条件キーを説明しています。
|
cvm:instance_type
|
String
| cvm:instance_type=instance_type その中に instance_type はインスタンスタイプを指しています(例えば S1.SMALL1)。 |
cvm:image_type
|
String
| cvm:image_type=image_type その中に image_type はイメージタイプを指しています(例えば IMAGE_PUBLIC) |
vpc:region
|
String
| vpc:region=region その中に region はリージョンを指しています(例えば ap-guangzhou) |
cvm:disk_size
|
Integer
| cvm:disk_size=disk_size その中に disk_size はディスクサイズを指しています(例えば500) |
cvm:disk_type
|
String
| cvm_disk_type=disk_type その中に disk_type はディスクタイプを指しています(例えばCLOUD_BASIC) |
cvm:region
|
String
| cvm:region=region その中に region はリージョンを指しています(例えば ap-guangzhou) |
この記事はお役に立ちましたか?