CA5375: アカウントの Shared Access Signature を使用しないでください
プロパティ | 値 |
---|---|
ルール ID | CA5375 |
Title | アカウントの Shared Access Signature を使用しないでください |
[カテゴリ] | Security |
修正が中断か中断なしであるか | なし |
.NET 8 では既定で有効 | いいえ |
原因
Microsoft.WindowsAzure.Storage
名前空間の下で GetSharedAccessSignature
メソッドを使用して、アカウントの Shared Access Signature (SAS) を生成しています。
規則の説明
アカウントの SAS では、サービス SAS で許可されていない BLOB コンテナー、テーブル、キューおよびファイル共有の読み取り、書き込みおよび削除操作へのアクセスを委任できます。 ただし、コンテナーレベルのポリシーをサポートしておらず、付与されるアクセス許可に対する柔軟性と制御力は高くありません。 可能であれば、きめ細かなアクセス制御を行うため、サービス SAS を使用します。 詳細については、Shared Access Signature (SAS) を使用したアクセスの委任に関するページを参照してください。
違反の修正方法
詳細に設定されたアクセス制御とコンテナーレベルのアクセス ポリシーには、アカウント SAS の代わりにサービス SAS を使用します。
どのようなときに警告を抑制するか
すべてのリソースのアクセス許可が可能な限り制限されている場合は、この規則を抑制しても問題ありません。
警告を抑制する
単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。
#pragma warning disable CA5375
// The code that's violating the rule is on this line.
#pragma warning restore CA5375
ファイル、フォルダー、またはプロジェクトの規則を無効にするには、構成ファイルでその重要度を none
に設定します。
[*.{cs,vb}]
dotnet_diagnostic.CA5375.severity = none
詳細については、「コード分析の警告を抑制する方法」を参照してください。
疑似コードの例
違反
現在のところ、次の擬似コード サンプルでは、この規則により検出されたパターンを示しています。
using System;
using Microsoft.WindowsAzure.Storage;
class ExampleClass
{
public void ExampleMethod(SharedAccessAccountPolicy policy)
{
CloudStorageAccount cloudStorageAccount = new CloudStorageAccount();
cloudStorageAccount.GetSharedAccessSignature(policy);
}
}
解決策
アカウント SAS ではなく、サービス SAS を使用します。
using System;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.File;
class ExampleClass
{
public void ExampleMethod(StorageCredentials storageCredentials, SharedAccessFilePolicy policy, SharedAccessFileHeaders headers, string groupPolicyIdentifier, IPAddressOrRange ipAddressOrRange)
{
CloudFile cloudFile = new CloudFile(storageCredentials);
SharedAccessProtocol protocols = SharedAccessProtocol.HttpsOnly;
cloudFile.GetSharedAccessSignature(policy, headers, groupPolicyIdentifier, protocols, ipAddressOrRange);
}
}
関連規則
.NET