保護IAMポリシーを使用したバージョン管理を使用したランサムウェア防御
バケットのバージョン管理を有効にし、StorageGRIDのユーザセキュリティグループにIAMポリシーを実装して、データを保護する方法について説明します。
オブジェクトロックやレプリケーションを使用せずにデータを保護するには、バケットでバージョン管理を有効にし、ユーザセキュリティグループにIAMポリシーを実装して、ユーザによるオブジェクトのバージョン管理を制限します。攻撃が発生した場合、データの新しい不正なバージョンが現在のバージョンとして作成され、最新でないバージョンが安全なクリーンデータになります。データにアクセスするために侵害されたアカウントは、削除したり、最新でないバージョンを変更したりすることができず、以降のリストア処理のために保護されています。前のシナリオと同様に、最新でないバージョンの保持期間を選択してILMルールによって管理されます。欠点は、不正なアクター攻撃のために特権アカウントが存在する可能性がまだあることですが、すべてのアプリケーションサービスアカウントとユーザーは、より制限的なアクセスを設定する必要があります。制限付きグループポリシーでは、ユーザまたはアプリケーションに許可する各アクションを明示的に許可し、許可しないアクションを明示的に拒否する必要があります。NetAppでは、今後新しいアクションが導入される可能性があり、許可するか拒否するかを制御する必要があるため、ワイルドカードAllowの使用は推奨されていません。このソリューションでは、ユーザによる変更やプログラムによる変更からバケットとオブジェクトのバージョン設定を保護するために、拒否リストにDeleteObjectVersion、PutBucketPolicy、DeleteBucketPolicy、PutLifecycleConfiguration、およびPutBucketVersioningを含める必要があります。
StorageGRIDでは、S3 グループ ポリシー オプション「ランサムウェア軽減」により、このソリューションの実装が容易になります。テナントにユーザー グループを作成するときに、グループ権限を選択すると、このオプション ポリシーが表示されます。

次に、グループポリシーの内容を示します。このグループポリシーには、明示的に許可された処理と、最低限必要な処理が含まれています。
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:DeleteBucket",
"s3:DeleteReplicationConfiguration",
"s3:DeleteBucketMetadataNotification",
"s3:GetBucketAcl",
"s3:GetBucketCompliance",
"s3:GetBucketConsistency",
"s3:GetBucketLastAccessTime",
"s3:GetBucketLocation",
"s3:GetBucketNotification"
"s3:GetBucketObjectLockConfiguration",
"s3:GetBucketPolicy",
"s3:GetBucketMetadataNotification",
"s3:GetReplicationConfiguration",
"s3:GetBucketCORS",
"s3:GetBucketVersioning",
"s3:GetBucketTagging",
"s3:GetEncryptionConfiguration",
"s3:GetLifecycleConfiguration",
"s3:ListBucket",
"s3:ListBucketVersions",
"s3:ListAllMyBuckets",
"s3:ListBucketMultipartUploads",
"s3:PutBucketConsistency",
"s3:PutBucketLastAccessTime",
"s3:PutBucketNotification",
"s3:PutBucketObjectLockConfiguration",
"s3:PutReplicationConfiguration",
"s3:PutBucketCORS",
"s3:PutBucketMetadataNotification",
"s3:PutBucketTagging",
"s3:PutEncryptionConfiguration",
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:DeleteObjectTagging",
"s3:DeleteObjectVersionTagging",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetObjectLegalHold",
"s3:GetObjectRetention",
"s3:GetObjectTagging",
"s3:GetObjectVersion",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging",
"s3:ListMultipartUploadParts",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectLegalHold",
"s3:PutObjectRetention",
"s3:PutObjectTagging",
"s3:PutObjectVersionTagging",
"s3:RestoreObject",
"s3:ValidateObject",
"s3:PutBucketCompliance",
"s3:PutObjectVersionAcl"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Deny",
"Action": [
"s3:DeleteObjectVersion",
"s3:DeleteBucketPolicy",
"s3:PutBucketPolicy",
"s3:PutLifecycleConfiguration",
"s3:PutBucketVersioning"
],
"Resource": "arn:aws:s3:::*"
}
]
}