S3のバケットポリシーの設定項目についてまとめてみた
はじめに
S3のバケットポリシーを設定する際のパラメータについてまとめてみました
バケットポリシーの設定項目
Version
設定ファイルの文法のバージョン
2012-10-17なのでもう10年近く変わってないが、どこかで変わったりするのだろうか
Statement
この中に設定を配列形式で書いていく それぞれのstatementは{}で囲む
Sid
Sid(statement id)はポリシードキュメントに与える任意の識別子のこと
各statementに割り当てることができ、そのポリシードキュメント内でユニークでなければならない
Effect
Allow(ホワイトリスト)かDeny(ブラックリスト)を選択
Principal
リソースへのアクセスを許可、または拒否する相手を指定する
次のいずれかを指定できる
- AWSアカウント及びルートユーザ
- IAMユーザ
- フェデレーティッドユーザー(ウェブ ID または SAML フェデレーションを使用)
- IAM ロール
- ロールを引き受けるセッション
- AWS のサービス
- 匿名ユーザー
Action
許可または拒否するアクションを指定する
Resource
statementをどのリソースに設定するか指定する
Condition
ポリシーを適用する条件を設定できる バケットポリシーに複数のコンディションやstatementを設定した際の挙動は、下記のクラメソさんの記事がとても参考になりました。 https://dev.classmethod.jp/articles/learn-aws-policy-documents-with-examples/
上記踏まえて特定のIPからと特定のvpceから接続可能にするポリシードキュメントを作ってみた
{ "Version": "2012-10-17", "Statement": [ { "Sid": "test1", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::test", "arn:aws:s3:::test/*" ], "Condition": { "IpAddress": { "aws:SourceIp": "XXX.XXX.XXX.XXX/32" } } }, { "Sid": "test2", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::test", "arn:aws:s3:::test/*" ], "Condition": { "StringEquals": { "aws:SourceVpce": "vpce-XXXXXXXXX" } } } ] }
django4.0以降でcsrf検証のoriginチェックに引っかかる場合の対処法
結論
settings.py
# 許可したいoriginを追記 CSRF_TRUSTED_ORIGINS = [ "http://example.com"]
補足
django4.0以降ではoriginレベルでcsrfのチェックが行われる
そのため許可したいoriginはsettings.pyに追記して許可する必要がある
参考
nginxでrequestheaderのoriginを書き換える
結論
nginx.conf
http { ~~~ server { ~~~ proxy_set_header Origin http://example.com } ~~~ }
補足
backendに送るリクエストのoriginを固定したい場合があったのでメモとして残しておく
proxy_set_headerを使えば既に同じ名前のheaderがある場合は再定義してくれる
add_headerを使うと既に同名のheaderが存在する場合には再定義してくれないので注意
Linuxでroot権限を付与する方法まとめ
結論
# visudo
sudoersファイルの編集画面に移行する
(viじゃなくてnanoで開かれることもある。viへの変更方法は後述)
下記のようにtargetuser(ユーザ名)を追記
## Allow root to run any commands anywhere root ALL=(ALL) ALL targetuser ALL=NOPASSWD: ALL
コマンド説明
visudo
sudoの設定ファイルは/etc/sudoersにあり、それを編集するためのコマンド
visudoは実行後にsudoersファイルをロックして、sudoersファイルとは別の一時ファイルとして編集画面に入る、編集後は一時ファイルを/etc/sudoersとして保存する前に構文チェックを行ってくれる
sudoersファイルは間違って編集すると2度とrootでログインすることができなくなる危険性があるため、編集の際はvisudoを使うべきである
visudoで開くediterを変更する
viといいながらnanoが開く場合があったので、変更方法
sudo update-alternatives --set editor /usr/bin/vim.basic