このセクションには、ソース コード以外のものでも、作成中の製品のセキュリティにとって重要なものがすべて含まれています。この分野が対象とする問題は、ソース コードに直接関係しないため、この分野の他の部分と分けました。
HTTP
に設定されている場合、HTTP リスナー コネクタは通信を暗号化しません。そのため、データが不正アクセス、改ざん、および盗難の危険にさらされます。listener-connection
) の protocol
を HTTP
に設定します。その結果の HTTP リスナーへの接続は安全ではありません。
<http:listener-config name="http_listener_config">
<http:listener-connection host="example.com" port="8080" protocol="HTTP">
...
</http:listener-connection>
</http:listener-config>
tls:context
要素は、一連の TLS 接続構成を定義します。構成の中で、tls:trust-store
要素は、クライアントがサーバーによって提示された証明書を検証するために使用する、信頼できる証明機関からの証明書を含むファイルを指定します。デフォルトでは、Mule ランタイム エンジンは、TLS 接続ごとにサーバー証明書を検証します。tls:trust-store
要素の insecure
属性の値が true
の場合、サーバー証明書は検証なしで受け入れられます。insecure
属性を true
に設定します。その結果、Mule ランタイム エンジンは、demoTlsContext
という名前の TLS コンテキストとの接続のサーバー証明書を検証しません。このような接続は、中間者 (Man-in-the-Middle) 攻撃に対して脆弱になります。
...
<tls:context name="demoTlsContext">
...
<tls:trust-store ... insecure="true" ... />
...
<tls:context/>
...
security
の要件とターゲット servers
の定義は、常にそれぞれのグローバル設定をオーバーライドします。 security
の要件とターゲット servers
の定義は、常にそれぞれのグローバル設定をオーバーライドします。 security
を定義します。security
定義によって、攻撃者は機密性の高い API エンドポイントと対話し、特定の権限を持つ特定のユーザー アカウントに制限する必要がある操作を実行できるようになる可能性があります。security
定義を宣言します。この仕様を実装する API は、機密性の高い操作への許可されていない、または認証されていないアクセスに対して脆弱である可能性があります。
{
"openapi" : "3.0.3",
"info" : {
"title" : "My API",
"version" : "1.0.0"
},
"servers" : [ {
"url" : "/"
} ],
"security" : [],
...
}
security
を定義します。security
定義によって、攻撃者は機密性の高い API エンドポイントと対話し、特定の権限を持つ特定のユーザー アカウントに制限する必要がある操作を実行できるようになる可能性があります。security
定義を宣言します。この仕様を実装する API は、機密性の高い操作への許可されていない、または認証されていないアクセスに対して脆弱である可能性があります。
openapi: 3.0.3
info:
title: My API
version: 1.0.0
security:
security
定義を含みます。security
定義を含む操作により、攻撃者は機密性の高い API エンドポイントと対話し、明示的な権限を持つ特定のユーザー アカウントに制限する必要があるアクションを実行できるようになる可能性があります。security
定義を設定します。これは、グローバルに定義されたセキュリティ要件をオーバーライドし、createUsers
操作を許可および認証されていないアクセスに対して脆弱にします。
{
"openapi": "3.0.0",
"info": {
...
},
"paths": {
"/users": {
"post": {
"security": [],
"summary": "Create a user",
"operationId": "createUsers",
...
}
...
}
}
security
定義を含みます。security
定義を含む操作により、攻撃者は機密性の高い API エンドポイントと対話し、明示的な権限を持つ特定のユーザー アカウントに制限する必要があるアクションを実行できるようになる可能性があります。security
定義を設定します。これは、グローバルに定義されたセキュリティ要件をオーバーライドし、createUsers
操作を許可および認証されていないアクセスに対して脆弱にします。
openapi: 3.0.0
info:
...
paths:
/users:
post:
operationId: createUsers
security: []
responses:
'201':
...
security
定義がありません。security
定義がないと、攻撃者は機密性の高い API エンドポイントと対話し、特定の権限を持つ特定のユーザー アカウントに制限する必要がある操作を実行できるようになる可能性があります。security
定義の宣言を怠ります。この仕様を実装する API は、機密性の高い操作への許可されていない、または認証されていないアクセスに対して脆弱である可能性があります。
{
"openapi" : "3.0.3",
"info" : {
"title" : "My API",
"version" : "1.0.0"
},
"servers" : [ {
"url" : "https://example.org"
} ],
...
}
security
定義がありません。security
定義がないと、攻撃者は機密性の高い API エンドポイントと対話し、特定の権限を持つ特定のユーザー アカウントに制限する必要がある操作を実行できるようになる可能性があります。security
定義の宣言を怠ります。この仕様を実装する API は、機密性の高い操作への許可されていない、または認証されていないアクセスに対して脆弱である可能性があります。
openapi: 3.0.3
info:
title: My API
version: 1.0.0
...
security
定義を含みません。security
定義を含まない操作により、攻撃者は機密性の高い API エンドポイントと対話し、明示的な権限を持つ特定のユーザー アカウントに制限する必要があるアクションを実行できるようになる可能性があります。security
定義の設定に失敗します。さらに、グローバル security
定義がない場合、createUsers
操作は、許可および認証されていないアクセスに対して脆弱です。
{
"openapi": "3.0.0",
"info": {
...
},
"paths": {
"/users": {
"post": {
"summary": "Create a user",
"operationId": "createUsers",
...
}
...
}
}
security
定義を含みません。security
定義を含まない操作により、攻撃者は機密性の高い API エンドポイントと対話し、明示的な権限を持つ特定のユーザー アカウントに制限する必要があるアクションを実行できるようになる可能性があります。security
定義の設定に失敗します。さらに、グローバル security
定義がない場合、createUsers
操作は、許可および認証されていないアクセスに対して脆弱です。
openapi: 3.0.0
info:
...
paths:
/users:
post:
operationId: createUsers
responses:
'201':
...
securitySchemes
定義がありません。securitySchemes
定義は、グローバルまたは特定の API 操作で使用できるセキュリティ メカニズムを指定します。securitySchemes
定義は通常、再利用可能な components
オブジェクトの下で指定されます。また、対話のセキュリティ要件を指示するために、グローバルに、または特定の操作によって参照されます。securitySchemes
の定義に失敗します。
{
"openapi" : "3.0.3",
"info" : {
"title" : "My API",
"version" : "1.0.0"
},
"components": {
"schemas": {
"GeneralError": {
"type": "object",
"properties": {
...
}
}
}
securitySchemes
定義がありません。securitySchemes
定義は、グローバルまたは特定の API 操作で使用できるセキュリティ メカニズムを指定します。securitySchemes
定義は通常、再利用可能な components
オブジェクトの下で指定されます。また、対話のセキュリティ要件を指示するために、グローバルに、または特定の操作によって参照されます。securitySchemes
の定義に失敗します。
openapi: 3.0.3
info:
title: My API
version: 1.0.0
components:
schemas:
GeneralError:
type: object
properties:
...
security
定義内で定義されたオプションのセキュリティ要件エントリにより、攻撃者は機密性の高い API エンドポイントと対話し、特定の権限を持つ特定のユーザー アカウントに制限する必要がある操作を実行できるようになる可能性があります。{}
アイテムを介したオプションのセキュリティを設定して、グローバル security
定義を宣言します。この仕様を実装する API は、機密性の高い操作への許可されていない、または認証されていないアクセスに対して脆弱である可能性があります。
{
"openapi" : "3.0.3",
"info" : {
"title" : "My API",
"version" : "1.0.0"
},
"servers" : [ {
"url" : "/"
} ],
"security" : [ {}, { "oauth_auth" : ["write","read" ]} ],
...
}
security
定義内で定義されたオプションのセキュリティ要件エントリにより、攻撃者は機密性の高い API エンドポイントと対話し、特定の権限を持つ特定のユーザー アカウントに制限する必要がある操作を実行できるようになる可能性があります。{}
アイテムを介したオプションのセキュリティを設定して、グローバル security
定義を宣言します。この仕様を実装する API は、機密性の高い操作への許可されていない、または認証されていないアクセスに対して脆弱である可能性があります。
openapi: 3.0.3
info:
title: My API
version: 1.0.0
security:
- {}
- oauth_auth:
- write:users
- read:users