Azure Logic Apps でのコネクタの使用をブロックする
適用対象: Azure Logic Apps (従量課金 + Standard)
Azure Logic Apps において、制限されたリソースまたは未承認のリソースにそれらのマネージド コネクタを使用して接続することが組織で許可されていない場合は、ロジック アプリ ワークフローでそれらの接続を作成および使用する機能をブロックできます。 Azure Policy を使用すると、ブロックするコネクタの接続を作成したり使用したりするのを防止するポリシーを定義して適用できます。 たとえば、セキュリティ上の理由から、特定のソーシャル メディア プラットフォームやその他のサービスまたはシステムへの接続をブロックすることが必要になる場合があります。
この記事では、Azure portal を使用して特定の接続をブロックするポリシーを設定する方法を示します。ただし、ポリシー定義は他の方法で作成できます。 たとえば、Azure REST API、Azure PowerShell、Azure CLI、Azure Resource Manager テンプレートを使用できます。 詳細については、コンプライアンスを強制するポリシーの作成と管理」を参照してください。
前提条件
Azure アカウントとサブスクリプション。 サブスクリプションがない場合は、無料の Azure アカウントを作成します。
ブロックするコネクタの参照 ID。 詳細については、「コネクタの参照 ID を見つける」を参照してください。
コネクタの参照 ID を見つける
ブロックする必要がある接続が含まれたロジック アプリが既にある場合は、Azure portal の手順に従ってください。 それ以外の場合は、次の手順に従います。
コネクタのリファレンス ドキュメント
Azure Logic Apps のコネクタに関するページを参照します。
ブロックするコネクタの参照ページを見つけます。
たとえば、非推奨になっている Instagram コネクタをブロックする場合は、次のページにアクセスします。
https://learn.microsoft.com/connectors/instagram/
このページの URL から、末尾のコネクタ参照 ID をスラッシュ (
/
) を付けずにコピーして保存します。たとえば、instagram
のようになります。後でポリシー定義を作成するときに、定義の条件ステートメントでこの ID を使用します。たとえば、次のようになります。
"like": "*managedApis/instagram"
Azure portal
Azure portal で、ご利用のロジック アプリ ワークフローを見つけて選択します。
ロジック アプリ メニューで、次のいずれかのオプションを選択します。
従量課金プランのロジック アプリ: [開発ツール] で [API 接続] を選択します。
Standard のロジック アプリ: [ワークフロー] で [接続] を選択します。 [接続] ペインで、[API 接続] を選択します (まだ選択されていない場合)。
[API 接続] ペインで、接続を選択します。 接続ペインが開いたら、右上隅の [JSON ビュー] を選択します。
次の形式の
id
プロパティと値を含むapi
オブジェクトを見つけます。"id": "/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region}/managedApis/{connection-name}"
次の例は、Instagram 接続の
id
プロパティと値を示しています。"id": "/subscriptions/xxxxxXXXXXxxxxxXXXXXxxxxxXXXXX/providers/Microsoft.Web/locations/westus/managedApis/instagram"
id
プロパティ値から、末尾のコネクター参照 ID (たとえば、instagram
) をコピーして保存します。後でポリシー定義を作成するときに、定義の条件ステートメントでこの ID を使用します。たとえば、次のようになります。
"like": "*managedApis/instagram"
接続の作成をブロックする
ロジック アプリ ワークフローで接続の作成を完全にブロックするには、次の手順を実行します。
Azure portal の検索ボックスに、「ポリシー」と入力し、[ポリシー] を選択します。
[ポリシー] メニューの [作成] で、[定義] を選択します。 [定義] ペインのツールバーで、[ポリシー定義] を選択します。
[ポリシー定義] ペインで、次の例で説明しているプロパティに基づいて、ポリシー定義の情報を指定します。
プロパティ 必要 値 説明 定義の場所 はい <Azure サブスクリプション名> ポリシー定義に使用する Azure サブスクリプション 1.サブスクリプションを見つけるには、省略記号 ( ... ) ボタンを選択します。
2. [サブスクリプション] 一覧からサブスクリプションを見つけて選択します。
3.終了したら、 [選択] を選択します。名前 はい <policy-definition-name> ポリシー定義に使用する名前 説明 いいえ <policy-definition-name> ポリシー定義の説明 カテゴリ はい Logic Apps ポリシー定義の既存のカテゴリまたは新しいカテゴリの名前 ポリシーの適用 はい 有効 この設定は、作業内容を保存するときにポリシー定義を有効にするか無効にするかを指定します。 [ポリシー ルール] では、JSON 編集ボックスにポリシー定義テンプレートがあらかじめ設定されています。 このテンプレートを、次の表で説明しているプロパティに基づき、次の構文にしたがって、ご自身のポリシー定義に置き換えます。
{ "mode": "All", "policyRule": { "if": { "field": "Microsoft.Web/connections/api.id", "like": "*managedApis/{connector-name}" }, "then": { "effect": "deny" } }, "parameters": {} }
プロパティ 値 説明 mode
All
ポリシーによって評価されるリソースの種類を決定するモード。 このシナリオでは、
mode
がAll
に設定されます。これにより、ポリシーは Azure リソース グループ、サブスクリプション、およびすべてのリソースの種類に適用されます。詳細については、Policy の定義の構造 - モードに関する記事を参照してください。
if
{condition-to-evaluate}
どのような場合にポリシー ルールを適用するかを決定する条件 このシナリオでは、
{condition-to-evaluate}
により、Microsoft.Web/connections/api.id
のapi.id
値が、ワイルドカード (*) 値が指定されている*managedApis/{connector-name}
で一致しているかどうかが判断されます。詳細については、Policy の定義の構造 - ポリシー ルールに関する記事を参照してください。
field
Microsoft.Web/connections/api.id
条件と比較する field
値このシナリオで、
field
は "field
" を使用して、コネクタ プロパティapi.id
の値にアクセスします。like
*managedApis/{connector-name}
field
値を比較するために使用する論理演算子と値このシナリオでは、
like
演算子とワイルドカード (*) 文字の両方により、このルールがリージョンに関係なく機能するようにします。文字列*managedApis/{connector-name}
は、照合する値であり、{connector-name}
は、ブロックするコネクタの ID です。たとえば、ソーシャル メディア プラットフォームまたはデータベースへの接続の作成をブロックするとします。
- X:
x
- Instagram:instagram
- Facebook:facebook
- Pinterest:pinterest
- SQL Server または Azure SQL:sql
これらのコネクタ ID を見つけるには、このトピックで前述した「コネクタの参照 ID を見つける」を参照してください。
then
{effect-to-apply}
if
条件が満たされたときに適用する効果このシナリオで、
{effect-to-apply}
は、ポリシーに準拠していない要求または操作をブロックして失敗させます。詳細については、Policy の定義の構造 - ポリシー ルールに関する記事を参照してください。
effect
deny
effect
は、指定された接続を作成する要求をブロックします詳細については、「Azure Policy の効果について」の「deny」を参照してください。
たとえば、Instagram コネクタを使用した接続の作成をブロックするとします。 使用できるポリシー定義を次に示します。
{ "mode": "All", "policyRule": { "if": { "field": "Microsoft.Web/connections/api.id", "like": "*managedApis/instagram" }, "then": { "effect": "deny" } }, "parameters": {} }
[POLICY RULE](ポリシー ルール) ボックスに次のように表示されます。
複数のコネクタの場合は、次のように条件を追加できます。
{ "mode": "All", "policyRule": { "if": { "anyOf": [ { "field": "Microsoft.Web/connections/api.id", "like": "*managedApis/instagram" }, { "field": "Microsoft.Web/connections/api.id", "like": "*managedApis/x" }, { "field": "Microsoft.Web/connections/api.id", "like": "*managedApis/facebook" }, { "field": "Microsoft.Web/connections/api.id", "like": "*managedApis/pinterest" } ] }, "then": { "effect": "deny" } }, "parameters": {} }
終了したら、 [保存] を選択します。 ポリシー定義を保存すると、Azure Policy によって、さらにプロパティ値が生成されて、ポリシー定義に追加されます。
次に、ポリシーを適用する場所にポリシー定義を割り当てるために、ポリシー割り当てを作成します。
Azure Policy 定義の詳細については、次のトピックを参照してください。
ロジック アプリとの接続の関連付けをブロックする
ロジック アプリ ワークフローで接続を作成すると、その接続は別の Azure リソースとして存在します。 ロジック アプリ ワークフローだけを削除した場合、接続リソースは自動的には削除されず、削除されるまで存在し続けます。 接続リソースが既に存在する場合や、ロジック アプリの外部で使用するために接続リソースを作成する必要がある場合があります。 その場合も、制限されている、または承認されていない接続を使用しようとするロジック アプリ ワークフローを保存できないようにするポリシーを作成することで、接続を別のロジック アプリ ワークフローに関連付ける機能をブロックできます。 このポリシーは、接続をまだ使用していないロジック アプリ ワークフローにのみ影響します。
Azure portal の検索ボックスに、「ポリシー」と入力し、[ポリシー] を選択します。
[ポリシー] メニューの [作成] で、[定義] を選択します。 [定義] ペインのツールバーで、[ポリシー定義] を選択します。
[ポリシー定義] で、次の例で説明しているプロパティに基づいてポリシー定義の情報を指定します。例として Instagram を使用して続行します。
プロパティ 必要 値 説明 定義の場所 はい <Azure サブスクリプション名> ポリシー定義に使用する Azure サブスクリプション 1.サブスクリプションを見つけるには、省略記号 ( ... ) ボタンを選択します。
2. [サブスクリプション] 一覧からサブスクリプションを見つけて選択します。
3.終了したら、 [選択] を選択します。名前 はい <policy-definition-name> ポリシー定義に使用する名前 説明 いいえ <policy-definition-name> ポリシー定義の説明 カテゴリ はい Logic Apps ポリシー定義の既存のカテゴリまたは新しいカテゴリの名前 ポリシーの適用 はい 有効 この設定は、作業内容を保存するときにポリシー定義を有効にするか無効にするかを指定します。 [ポリシー ルール] では、JSON 編集ボックスにポリシー定義テンプレートがあらかじめ設定されています。 このテンプレートを、次の表で説明しているプロパティに基づき、次の構文にしたがって、ご自身のポリシー定義に置き換えます。
{ "mode": "All", "policyRule": { "if": { "value": "[string(field('Microsoft.Logic/workflows/parameters'))]", "contains": "{connector-name}" }, "then": { "effect": "deny" } }, "parameters": {} }
プロパティ 値 説明 mode
All
ポリシーによって評価されるリソースの種類を決定するモード。 このシナリオでは、
mode
がAll
に設定されます。これにより、ポリシーは Azure リソース グループ、サブスクリプション、およびすべてのリソースの種類に適用されます。詳細については、Policy の定義の構造 - モードに関する記事を参照してください。
if
{condition-to-evaluate}
どのような場合にポリシー ルールを適用するかを決定する条件 このシナリオでは、
{condition-to-evaluate}
は、[string(field('Microsoft.Logic/workflows/parameters'))]
からの文字列出力に文字列{connector-name}
が含まれているかどうかを判断します。詳細については、Policy の定義の構造 - ポリシー ルールに関する記事を参照してください。
value
[string(field('Microsoft.Logic/workflows/parameters'))]
条件と比較する値 このシナリオで、
value
は[string(field('Microsoft.Logic/workflows/parameters'))]
からの文字列出力であり、Microsoft.Logic/workflows/parameters
オブジェクト内の$connectors
オブジェクトを文字列に変換します。contains
{connector-name}
value
プロパティとの比較に使用する論理演算子と値このシナリオで、
contains
演算子は、{connector-name}
の出現箇所に関係なくルールが機能するようにします。ここで、文字列{connector-name}
は、制限またはブロックするコネクタの ID です。たとえば、ソーシャル メディア プラットフォームまたはデータベースへの接続の使用をブロックするとします。
- X:
x
- Instagram:instagram
- Facebook:facebook
- Pinterest:pinterest
- SQL Server または Azure SQL:sql
これらのコネクタ ID を見つけるには、このトピックで前述した「コネクタの参照 ID を見つける」を参照してください。
then
{effect-to-apply}
if
条件が満たされたときに適用する効果このシナリオで、
{effect-to-apply}
は、ポリシーに準拠していない要求または操作をブロックして失敗させます。詳細については、Policy の定義の構造 - ポリシー ルールに関する記事を参照してください。
effect
deny
effect
は、指定された接続を使用するロジック アプリを保存する要求をdeny
またはブロックします詳細については、「Azure Policy の効果について」の「deny」を参照してください。
たとえば、Instagram 接続を使用するロジック アプリの保存をブロックするとします。 使用できるポリシー定義を次に示します。
{ "mode": "All", "policyRule": { "if": { "value": "[string(field('Microsoft.Logic/workflows/parameters'))]", "contains": "instagram" }, "then": { "effect": "deny" } }, "parameters": {} }
[POLICY RULE](ポリシー ルール) ボックスに次のように表示されます。
終了したら、 [保存] を選択します。 ポリシー定義を保存すると、Azure Policy によって、さらにプロパティ値が生成されて、ポリシー定義に追加されます。
次に、ポリシーを適用する場所にポリシー定義を割り当てるために、ポリシー割り当てを作成します。
Azure Policy 定義の詳細については、次のトピックを参照してください。
ポリシー割り当てを作成する
次に、ポリシー定義を、ポリシーを適用する場所 (たとえば、1 つのリソース グループ、複数のリソース グループ、Microsoft Entra テナント、または Azure サブスクリプション) に割り当てる必要があります。 このタスクでは、次の手順に従ってポリシー割り当てを作成します。
Azure portal の検索ボックスに、「ポリシー」と入力し、[ポリシー] を選択します。
[ポリシー] メニューの [作成] で、[割り当て] を選択します。 [割り当て] ペインのツールバーで、[ポリシーの割り当て] を選択します。
[ポリシーの割り当て] ペインの [基本] で、ポリシー割り当てに関する次の情報を指定します。
プロパティ Required 説明 スコープ はい ポリシー割り当てを適用するリソース。 1. [スコープ] ボックスの横にある省略記号 ( ... ) ボタンを選択します。
2. [サブスクリプション] の一覧から、Azure サブスクリプションを選択します。
3.必要に応じて、 [リソース グループ] の一覧から、リソース グループを選択します。
4.終了したら、 [選択] を選択します。除外 いいえ ポリシー割り当てから除外する Azure リソースを選択します。 1. [除外] ボックスの横にある省略記号 ( ... ) ボタンを選択します。
2. [リソース] リストで、リソース > [Add to Selected Scope]\(選択したスコープに追加\) を選択します。
3.終了したら、 [保存] を選択します。ポリシー定義 はい 割り当てて適用するポリシー定義の名前。 この例では、"Block Instagram connections" という Instagram ポリシーの例を続けます。 1. [ポリシー定義] ボックスの横にある省略記号 ( ... ) ボタンを選択します。
2. [種類] フィルターまたは [検索] ボックスを使用して、ポリシー定義を検索して選択します。
3.終了したら、 [選択] を選択します。割り当て名 はい ポリシー割り当てに使用する名前 (ポリシー定義と異なる場合) 割り当て ID はい ポリシー割り当ての自動生成された ID 説明 いいえ ポリシー割り当ての説明 ポリシーの適用 はい ポリシー割り当てを有効または無効にする設定 割り当て担当者 いいえ ポリシー割り当てを作成および適用したユーザーの名前 たとえば、Instagram の例を使用して、Azure リソース グループにポリシーを割り当てるには、次のようにします。
完了したら、 [確認および作成] を選択します。
ポリシーを作成した後、ポリシーが有効になるまでに最大 15 分間待つ必要がある場合があります。 変更でも同様の遅延効果がある場合があります。
ポリシーが有効になったら、ポリシーをテストできます。
詳細については、「クイックスタート: 準拠していないリソースを識別するためのポリシー割り当てを作成する」を参照してください。
ポリシーをテストする
ポリシーを試すには、ワークフロー デザイナーで、現在制限されているコネクタを使用して接続の作成を開始します。 Instagram の例を続行した場合、Instagram にサインインするときに、ロジック アプリが接続の作成に失敗したというエラーが表示されます。
メッセージには次の情報が含まれています。
説明 | コンテンツ |
---|---|
エラーの原因 | "Resource 'instagram' was disallowed by policy." |
割り当て名 | "Block Instagram connections" |
割り当て ID | "/subscriptions/xxxxxXXXXXxxxxxXXXXXxxxxxXXXXX/resourceGroups/MyLogicApp-RG/providers/Microsoft.Authorization/policyAssignments/4231890fc3bd4352acb0b673" |
ポリシー定義 ID | "/subscriptions/xxxxxXXXXXxxxxxXXXXXxxxxxXXXXX/providers/Microsoft.Authorization/policyDefinitions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e" |
次のステップ
- Azure Policy の詳細を確認する