Flex Gateway新着情報
Governance新着情報
Monitoring API Managerガバナンスルールセットのルールに対して Anypoint Code Builder 設計プロジェクトの API 仕様をテストし、結果として生じた準拠の問題を修正します。
ルールセットとガバナンスについての詳細は、Anypoint API Governance の概念を参照してください。
サポートされる仕様を含む API 設計プロジェクトが Anypoint Code Builder にある必要があります。API 仕様の作成およびインポートを参照してください。
API 仕様がサポートされていることを確認します。API ガバナンスの互換性を参照してください。
通常のワークフローは次の 1 つ以上のタスクで構成されます。
1 つ以上のルールセットを API 設計プロジェクトに追加します。
ルールセットのルールを実行して、API 仕様がルールに準拠するかどうかを確認します。
仕様内の準拠の問題を修正します。
ガバナンスルールセットを連動関係として Anypoint Code Builder の API 設計プロジェクトに追加します。
ルールセットは Exchange でホストされています。MuleSoft は多くの公開ルールセットを提供しています。これらのルールセットは Anypoint Code Builder で見つけることができます。また、 Exchange で直接確認することもできます。たとえば、ルールセット Anypoint Best Practices (Anypoint ベストプラクティス) では、ドキュメントと例が提供されています。チームは組織のルールセットを作成して Exchange にパブリッシュすることもできます (カスタムガバナンスルールセットの作成を参照)。
Anypoint Code Builder で API 設計プロジェクトを開きます。
Explorer からプロジェクトの [Governance Rulesets (ガバナンスルールセット)] パネルを開きます。
このパネルが Explorer にない場合、Explorer の [Views and More Actions… (ビューおよびその他のアクション…)] (…) メニューでパネルをアクティブ化します。
ルールセットを追加します。
パネルにルールセットが含まれない場合、[Add Rulesets (ルールセットを追加)] をクリックします。 次に例を示します。
パネル",width=600]
パネルにルールセットが含まれる場合、パネルにマウスポインターを置いて ([Add Governance Rulesets (ガバナンスルールセットを追加)]) をクリックすると、別のルールセットを追加できます。次に例を示します。
アイコン",width=600]
Anypoint Platform にサインインするように促されたら、サインインします。
ルールセットを検索して [Add Rulesets (ルールセットを追加)] をクリックします。次に例を示します。
",width=600]
また、[Any organization (任意の組織)] メニューから検索を特定の組織に絞り込んだり、複数のバージョンを使用できる場合はルールセットの別のバージョンを選択したりできます。
API 仕様に対するルールの実行に進みます。
API 仕様がガバナンスルールセットのルールに準拠するかどうかを確認します。
Anypoint Code Builder で API 設計プロジェクトを開きます。
Explorer から [Governance Rulesets (ガバナンスルールセット)] パネルを開き、プロジェクトにルールセットがあるかどうかを確認します。
ルールセットが存在し、他のルールセットを追加しない場合は、次のステップに進みます。
アイコン",width=500]
ルールセットが存在しない場合、または他のルールセットを追加する場合は、プロジェクトへのルールセットの追加に進みます。
パネル",width=500]
[Governance Rulesets (ガバナンスルールセット)] パネルからルールを実行します。
ルールセットは複数のレベルで実行できます。
すべてのルールセットのすべてのルール
1 つのルールセットのすべてのルール
1 つのルールセットの 1 つのルール
ルールが実行されているときにルールを監視できます。次に例を示します。
いずれかのルールでエラー () または警告 () が返された場合、準拠の問題の修正に進みます。
たとえば、次のルールセットでは、いくつかのルールで警告が返されています。
ルールセットに表示されている実行時間 (19.25 秒など) は各ルールの実行に要した時間の合計を表します。ルールは複数コアのマシンで並列実行されるため、ルールセットに表示されている実行時間は、実行完了までの実際の時間よりも長くなっている可能性があります。
[Governance Results (ガバナンス結果)] パネルでも警告またはエラーが特定されます。次に例を示します。
パネルに表示されている警告を含むルールセット",width=700]
エラーや警告を返すルールに対処するには、ルールに準拠するように仕様を修正します。その後、ルールを再実行して修正が有効であることを確認します。
問題に対処するプロセスを説明するために、この手順の例は RAML 仕様の一部といくつかのルールセットから始まっています。
仕様には次のマークアップが含まれます。
#%RAML 1.0
title: my-des-with-governance
protocols:
- HTTP
仕様の設計プロジェクトでは次のルールセットが適用されます。
HTTPS 適用
Anypoint ベストプラクティス
エラー () および警告 () を修正する手順は、次のとおりです。
プロジェクトでルールセットを実行します。
案内については、API 仕様に対するルールの実行を参照してください。
発生したエラーおよび警告を [Governance Results (ガバナンス結果)] パネルで確認します。次に例を示します。
[Governance Results (ガバナンス結果)] に、対応する問題がリストされています。次に例を示します。
Error: [HTTPS Enforcement] Only use https protocol scheme (エラー: [HTTPS 適用] HTTPS プロトコルスキームのみを使用してください)。
Warning: [Anypoint Best Practices] Provide the documentation for the API (警告: [Anypoint ベストプラクティス] API のドキュメントを指定してください)。
Warning: [Anypoint Best Practices] Provide the description for the API (警告: [Anypoint ベストプラクティス] API の説明を指定してください)。
仕様内のエラーに対処します。
たとえば、HTTP
を HTTPS
に変更することで 仕様例の HTTPS 適用エラーを修正します。
#%RAML 1.0
title: my-des-with-governance
protocols:
- HTTPS
失敗したルールを再実行してエラーが修正されたことを確認します。
たとえば、仕様例の protocols
エラーを修正したら、[Governance Rulesets (ガバナンスルールセット)] パネルから use-https-for-scheme-protocol を実行します。次に例を示します。
[Governance Rulesets (ガバナンスルールセット)] にエラーが表示されなくなったことを確認します。次に例を示します。
また、[Governance Results (ガバナンス結果)] パネルに問題がリストされなくなります。
必要に応じて、警告に対処します。
次に例を示します。
仕様例に description
を追加することで、警告「Provide the description for the API (API の説明を指定してください)」
に対処します。次に例を示します。
#%RAML 1.0
title: my-des-with-governance
description: my description
protocols:
- HTTPS
description は title
と protocols
の間にあります。
ルール api-must-have-description を再実行して、仕様がルールに準拠するようになったことを確認します。
ルールセットの別のルールに警告があるため、ルールセットでは引き続き警告が特定されています。
修正する必要がある残りの問題に対処します。
たとえば、例の警告「Provide the documentation for the API (API のドキュメントを指定してください)」
の場合、documentation
マークアップを仕様に追加して保存します。
#%RAML 1.0
title: my-des-with-governance
description: my description
documentation:
- title: My Title
content: |
Welcome to my API documentation.
- title: Legal
content: |
This is my legal documentation.
protocols:
- HTTPS
[Governance Rulesets (ガバナンスルールセット)] パネルで対応するルールを再実行します。
たとえば、api-must-have-documentation を再実行して、仕様がルールに準拠するようになったことを確認します。
仕様のエラーまたは警告がなくなりました。次に例を示します。
[Governance Ruleset (ガバナンスルールセット)] パネルでルールセットにマウスポインターを置くと、[More actions (その他のアクション)] (…) メニューが表示されます。
[More actions (その他のアクション)] メニューで [Remove Ruleset… (ルールセットを削除…)] をクリックします。
また、この目的ではコマンドパレットからコマンド MuleSoft: Remove Governance Ruleset… を使用することもできます。
ルールセットの YAML ファイルの設定を調べる手順は、次のとおりです。
[Governance Ruleset (ガバナンスルールセット)] パネルでルールセットにマウスポインターを置くと、[More actions (その他のアクション)] (…) メニューが表示されます。
[Show in Files (ファイルで表示)] をクリックすると、YAML ファイルが IDE の [ruleset.yaml] タブで開きます。
次の例は、HTTPS 適用 YAML ファイルのバージョン 1.6.1 を示しています。
#%Validation Profile 1.0
profile: HTTPS enforcement
description: This ruleset helps ensure the use of HTTPS across URLs in API
definitions, both in the base server URL and in any callbacks optionally
defined.
violation:
- use-https-for-callbacks
- use-https-for-scheme-protocol
- use-https-for-urls
tags:
- security
validations:
use-https-for-callbacks:
message: "{{apiContract.expression}} must use https as it is a callback url"
targetClass: apiContract.Callback
propertyConstraints:
apiContract.expression:
pattern: ^https://
examples:
valid: |
openapi: "3.0.0"
info:
title: example API
version: "1.0.0"
paths:
/subscribe:
post:
responses:
'201':
description: Webhook created
callbacks:
myEvent:
'https://{$request.body#/callbackUrl}'
invalid: |
openapi: "3.0.0"
info:
title: example API
version: "1.0.0"
paths:
/subscribe:
post:
responses:
'201':
description: Webhook created
callbacks:
myEvent:
'http://{$request.body#/callbackUrl}'
use-https-for-scheme-protocol:
message: Only use https protocol scheme
targetClass: apiContract.WebAPI
not:
propertyConstraints:
apiContract.scheme:
containsSome:
- HTTP
- http
examples:
valid: |
#%RAML 1.0
protocols:
- HTTPS
invalid: |
#%RAML 1.0
protocols:
- HTTP
use-https-for-urls:
message: "{{core.urlTemplate}} should use https"
targetClass: apiContract.Server
propertyConstraints:
core.urlTemplate:
pattern: ^https://
examples:
valid: |
openapi: "3.0.0"
servers:
- url: "https://mySecureEndpoint"
description: "My endpoint that uses HTTPS"
invalid: |
openapi: "3.0.0"
servers:
- url: "http://myNotSoSecureEndpoint"
description: "My endpoint that uses HTTP"