カスタムポリシーを使用して、アクセスの制御に関するさまざまな要件を満たすことができます。Resource Access Management ( RAM ) コンソールでは、視覚モードまたはスクリプトモードでカスタムポリシーを構成できます。このトピックでは、カスタムポリシーの用語、シナリオ、手順、構文、および例について説明します。
シナリオ
システムポリシーは粗粒度です。詳細なアクセスの制御のためにカスタム RAM ポリシーを作成できます。
たとえば、RAM ユーザーにストリーミングドメインのスナップショット設定を照会する権限のみを付与する場合、カスタムポリシーを作成できます。
手順
次の例では、カスタムポリシーを作成する方法について説明します。
例 1:RAM ユーザーにストリーミングドメインのスナップショット設定を照会する権限を付与する
RAM ユーザーにストリーミングドメインのスナップショット設定を照会する権限のみを付与する場合、次の操作を実行できます。
RAM コンソールの [ポリシーの作成] ページの [ビジュアルエディター] タブで、[メディアサービス] > [ApsaraVideo Live] を選択します。
[読み取り操作] を展開し、[操作のフィルタリング] 検索ボックスに DescribeLiveSnapshotConfig と入力して、live:DescribeLiveSnapshotConfig を選択します。DescribeLiveSnapshotConfig 操作を呼び出して、ストリーミングドメインのスナップショット設定を照会できます。
[OK] をクリックします。
[名前] フィールドにポリシーの名前を指定し、[OK] をクリックします。
RAM ユーザーを作成し、作成したポリシーを RAM ユーザーにアタッチします。詳細については、「RAM ユーザーを作成し、RAM ユーザーに権限を付与する」をご参照ください。
ポリシーを RAM ユーザーにアタッチした後、RAM ユーザーとして DescribeLiveSnapshotConfig 操作を呼び出すと、システムはストリーミングドメインのスナップショット設定を返します。別の操作を呼び出すと、システムは対応する権限がないことを示すメッセージを返します。
例 2:RAM ユーザーに特定の IP アドレスからストリーミングドメインのスナップショット設定を照会する権限を付与する
例 1 では、DescribeLiveSnapshotConfig 操作を呼び出す RAM ユーザーに対して権限制御を実装しました。RAM ユーザーに対してより詳細な制御を実行する場合、たとえば、RAM ユーザーが DescribeLiveSnapshotConfig 操作の呼び出しに使用する IP アドレスを制限するには、次の操作を実行できます。
RAM コンソールの ポリシー ページで、検索ボックスに例 1 で作成したポリシーの名前を入力して、ポリシーを見つけます。
ポリシー名をクリックして、ポリシーの詳細ページに移動します。
[ポリシードキュメント] タブで、[ポリシードキュメントの編集] をクリックします。
[ビジュアルエディター] タブで、[条件] を展開し、[条件の追加] をクリックします。表示されるダイアログボックスで、[キー] ドロップダウンリストから acs:SourceIp を選択し、[演算子] ドロップダウンリストから IpAddress を選択し、[値] フィールドに RAM ユーザーが使用できるようにする特定の IP アドレスを入力します。[OK] をクリックします。
[ポリシーの変更] ページで、[OK] をクリックします。
上記の操作を実行した後、RAM ユーザーが指定された IP アドレスのいずれかから DescribeLiveSnapshotConfig 操作を呼び出した場合にのみ、データが返されます。RAM ユーザーが別の IP アドレスを使用すると、システムは RAM ユーザーに対応する権限がないことを示すメッセージを返します。
詳細については、「カスタムポリシーの作成」をご参照ください。
構文
ポリシー詳細ページの [ポリシードキュメント] タブでは、ポリシーはコードエディタで記述されます。次のコードは、[例 2] のポリシードキュメントです。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "live:DescribeLiveSnapshotConfig",
"Resource": "*",
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"127.0.0.1"
]
}
}
}
]
}上記のポリシードキュメントのパラメーターの説明:
バージョン
Version パラメーターは、ポリシーのバージョンを定義します。システムはこのパラメーターを 1 に設定します。
声明
1 つのポリシーに複数のステートメントを含めることができます。各ステートメントには、Action、Effect、Resource、および Condition の各要素が含まれています。システムは各リクエストのステートメントをチェックします。一致するステートメントには、値が Allow または Deny の Effect 要素が含まれています。Effect が Deny に設定されている一致するステートメントが優先されます。一致するすべてのステートメントの Effect 要素が Allow に設定されている場合、リクエストは認証に合格します。一致するステートメントの 1 つに Effect 要素が Deny に設定されているか、一致するステートメントがない場合、リクエストは拒否されます。
効果
Effect は、認可の効果 ( Allow または Deny ) を定義します。
アクション
ApsaraVideo Live のアクションは API 操作に対応します。Action の値は
live:<API 操作名>のフォーマットです。例:live:DescribeLiveSnapshotConfig。複数の Action 値はコンマ (,) で区切ります。複数の Action 値を指定して、権限グループを取得できます。使用可能なすべての操作を表示するには、「関数別の操作リスト」をご参照ください。
リソース
Resource は、権限を付与されたユーザーがアクセスできる 1 つ以上の ApsaraVideo Live リソースを指定します。アスタリスク (*) をワイルドカードとして使用できます。Resource の値は
acs:{ramCode}:{region}:{accountId}:{relative}フォーマットです。Resource 要素を使用して複数のリソースを指定できます。ApsaraVideo Live の ramCode パラメーターの有効な値は、live、cdn、および live-interaction です。region フィールドをアスタリスク (*) に設定します。accountID パラメーターの値は、Alibaba Cloud アカウントの ID です。relative パラメーターは特定のリソースを指定します。これは通常、例 2 に示すようにアスタリスク (*) に設定されます。一部の API 操作では、このパラメーターを特定のリソースに設定できます。説明ビジュアルエディターを使用してポリシーを構成すると、ポリシーは API 操作に対応する ramCode に自動的に一致します。
条件
Condition は、ポリシーのアクセスの制御条件を指定します。この要素はオプションです。
次の表に、サポートされている条件を示します。
条件
説明
有効な値
acs:SourceIp
IP アドレスまたは CIDR ブロックを指定します。
IP アドレス。アスタリスク ( * ) を使用できます。
acs:SecureTransport
アクセスに HTTPS を使用するかどうかを指定します。
[true] または [false]
acs:MFAPresent
ユーザーログイン中に多要素認証 ( MFA ) を使用するかどうかを指定します。
[true] または [false]
acs:CurrentTime
リクエストを受信したときの有効な時間を指定します。
ISO 8601 標準に基づく値。例:[2012-11-11T23:59:59Z]。
ポリシーの基本要素と構文の詳細については、「ポリシー要素」および「ポリシーの構造と構文」をご参照ください。
JSON
ポリシーの構文を理解した後、JSON スクリプトを編集してポリシーを構成することができます。たとえば、JSON スクリプトを編集して、例 2 で作成したポリシーに IP アドレス 127.0.0.2 を追加する場合は、次の操作を実行します。
RAM コンソールの ポリシー ページで、検索ボックスに例 1 で作成したポリシーの名前を入力して、ポリシーを見つけます。
ポリシー名をクリックして、ポリシーの詳細ページに移動します。
[ポリシードキュメント] タブで、[ポリシードキュメントの編集] をクリックします。表示されたページで、[JSON] タブをクリックします。
acs:SourceIp パラメーターに 127.0.0.2 と入力します。
[OK] をクリックします。IP アドレスがポリシーに追加されます。
ポリシーを構成した後、次のポリシードキュメントが表示されます。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "live:DescribeLiveSnapshotConfig",
"Resource": "*",
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"127.0.0.1",
"127.0.0.2"
]
}
}
}
]
}バージョン管理
ポリシーを更新した後、何らかの理由で以前のポリシーにロールバックしたい場合があります。この場合、バージョン管理機能を使用できます。手順: ポリシー詳細ページで、[ポリシーバージョン] ドロップダウンリストをクリックします。ターゲットバージョンを選択し、[デフォルトバージョンとして設定] をクリックします。
ポリシーには最大 5 つのバージョンを保持できます。
高度な使用方法
権限を付与するためのカスタムポリシーの作成方法を学習しました。ここで、次のビジネス要件があります。
ストリーミングドメインのスナップショット設定を構成する AddLiveAppSnapshotConfig 操作の呼び出しに対する権限を制御します。
承認された RAM ユーザーがドメイン A とドメイン B のスナップショット設定のみを構成できるようにします。
上記の認可要件を満たすには、次の操作を実行できます。
RAM コンソールの [ポリシーの作成] ページの [ビジュアルエディター] タブで、[メディアサービス] > [ApsaraVideo Live] を選択します。
[書き込み操作] を展開し、[操作のフィルタリング] 検索ボックスに AddLiveAppSnapshotConfig と入力して、live:AddLiveAppSnapshotConfig を選択します。AddLiveAppSnapshotConfig 操作を呼び出して、ストリーミングドメインのスナップショット設定を構成できます。
[リソース] セクションで、[指定されたリソース] を選択し、[リソースの追加] をクリックします。表示されるダイアログボックスで、[アカウント] パラメーターにアスタリスク (*) を入力し、[リソース] パラメーターにドメイン A を入力して、[OK] をクリックします。同様の操作を実行してドメイン B を追加します。
[ポリシーの作成] ページで、[OK] をクリックします。
[名前] フィールドにポリシーの名前を指定し、[OK] をクリックします。次のコードは、ポリシードキュメントを提供します。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "live:AddLiveAppSnapshotConfig", "Resource": [ "acs:cdn:*:*:domain/domainA", "acs:cdn:*:*:domain/domainB" ] } ] }作成したポリシーを RAM ユーザーにアタッチします。
上記の操作を実行した後、承認された RAM ユーザーはドメイン A とドメイン B のスナップショット設定のみを構成できます。
API 操作は、さまざまなリソース制御形式をサポートしています。ビジュアルエディターを使用して詳細な権限制御を構成することをお勧めします。