- 公開日
- 最終更新日
【セキュリティ対策】WP Offload Media Lite プラグインにおけるアクセスキーからIAMロールへの変更
この記事を共有する
目次
はじめに
パーソル&サーバーワークスの 梅津 です。
AWSを中心としたクラウドインフラの設計・構築・運用を担当しています。
本ブログは下記の方に向けたブログとなっております。
- Amazon EC2 インスタンスに WordPress をインストールして Web サイトを公開している
- WP Offload Media Lite プラグインを使用して、画像は Amazon S3 にアップロードしている
- Amazon EC2 インスタンスから Amazon S3 バケットへのアクセスは IAM ユーザーのアクセスキーを使用している
- セキュリティ向上のため、Amazon EC2 インスタンスからのアクセスを IAM ロールを使用した方法に切り替えたいと考えている
本ブログでは、すでに WP Offload Media Lite プラグインにおいて IAM ユーザーのアクセスキーを使用している状態から、IAM ロールを使用した方法に切り替える方法を記載しております。
結論
下記の手順で切り替え作業を実施することにより、ダウンタイムなく切り替えることが可能です。
- WordPress がインストールされている Amazon EC2 インスタンスに適用している IAM ロールに 、画像アップロード先の Amazon S3 バケット へのアクセス権を設定する(バケットポリシーでアクセス元を制限している場合は、バケットポリシーに IAM ロールからのアクセス許可を設定)
- WordPress内の「wp-config.php」ファイルに記載された IAM ユーザーのアクセスキーを IAM ロールの設定に修正する
- WP Offload Media Lite プラグイン内の設定も自動的に IAM ロールを使用した方法に切り替えられる
詳細な設定内容は下記でご説明いたします。
切替手順
1. IAM ロールの確認とアタッチ
既に WordPress がインストールされている Amazon EC2 インスタンスにおいて、アタッチされている IAM ロールを確認します。
公式では Amazon S3 へのアクセス権限として、「AmazonS3FullAccess」を付与することを推奨しておりますが、権限を細かく設定したい場合は、 下記の通り、WP Offload Media Lite プラグインが適切に動作するための基本的な権限をカスタムポリシーで設定いたします。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ObjectLevel",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::*/*"
},
{
"Sid": "BucketLevel",
"Effect": "Allow",
"Action": [
"s3:GetBucketPublicAccessBlock",
"s3:PutBucketPublicAccessBlock",
"s3:GetBucketOwnershipControls",
"s3:PutBucketOwnershipControls",
"s3:CreateBucket",
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::*"
},
{
"Sid": "AccountLevel",
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
}
]
}
※参考:Custom IAM Policy for Amazon S3
IAM ロールに必要な権限を付与したら、次の手順に移ります。
2. WordPress内の設定ファイルの修正
WP Offload Media Lite プラグインで IAM ユーザーのアクセスキーを使用している場合、 WordPress内の設定ファイルにアクセスキーの情報が記載されております。
その記載を書き換えることで、 IAM ロールを使用した WP Offload Media Lite プラグインの利用が可能となります。
通常は WordPress 内の「wp-config.php」内に記載しているかと思いますが、 WordPressの設定により異なる場合があります。
もし記載が見当たらない場合は「access-key-id」などでディレクトリ内を検索してみてください。
記載については、下記の通り修正します。
ここで記載を書き換えることで、 WP Offload Media Lite プラグイン側の設定変更を行うことなく、 IAM ロールを使用した利用に変更されます。
修正前(アクセスキーを使用する場合の記載)
define( 'AS3CF_SETTINGS', serialize( array(
'provider' => 'aws',
'access-key-id' => '********************',
'secret-access-key' => '**************************************',
) ) );
修正後( IAM ロールを使用する場合の記載)
define( 'AS3CF_SETTINGS', serialize( array(
'provider' => 'aws',
'use-server-roles' => true,
) ) );
※参考:IAM Roles on Amazon Elastic Compute Cloud (EC2) or Google Compute Engine (GCE)
3. WP Offload Media Lite プラグイン内の設定
2番の手順を実施した段階で、自動的に WP Offload Media Lite プラグインも IAM ロールを使用した方法に変更されます。
権限が不足している場合は、 WP Offload Media Lite プラグインの設定画面にエラーが表示されますので、自動的に設定は切り替わりますが、設定画面も念のためご確認ください。
最後に
以上がすでに WP Offload Media Lite プラグインにおいて IAM ユーザーのアクセスキーを使用している状態から、IAM ロールを使用した方法に切り替える方法となります。
アクセスキーの利用は AWS としても非推奨となっておりますので、もし現在でもWP Offload Media Lite プラグインにおいて IAM ユーザーのアクセスキーを使用している場合は、ダウンタイムなく切り替え可能ですので、セキュリティ対策の一環として切替の実施をおすすめいたします。
この記事は私が書きました
梅津 純一
記事一覧一番好きな食べ物は生のねぎです。 元ネットワークエンジニアのAWSエンジニア