2回答
- 新しい順
- 投票が多い順
- コメントが多い順
1
時間が無くて実際には試せていないのですが、S3バケットポリシーにAWS BackupのIAMロールを許可するように設定してみてはいかがでしょうか?
具体的には以下のように「StringNotEquals」でIAMのARNを指定するような形です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::{bucket_name}",
"arn:aws:s3:::{bucket_name}/*"
],
"Condition": {
"StringNotEquals": {
"aws:PrincipalArn": [
"AWS BackupのIAMロールのARN",
"IAMユーザーのARN"
]
}
}
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::{bucket_name}",
"arn:aws:s3:::{bucket_name}/*"
],
"Condition": {
"NotIpAddress": {
"aws:VpcSourceIp": [
"124.215.101.111/32",
"60.112.161.29/32"
]
}
}
}
]
}
1
最終的には以下のバケットポリシーでS3を選択できるようになりました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::{bucket_name}",
"arn:aws:s3:::{bucket_name}/*"
],
"Condition": {
"StringNotEquals": {
"aws:PrincipalArn": [
"AWS BackupのIAMロールのARN",
"IAMユーザーのARN"
]
}
}
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::{bucket_name}",
"arn:aws:s3:::{bucket_name}/*"
],
"Condition": {
"StringNotLike": {
"aws:userId": "AIDxxxxxxxxxxxxxxxxx"
},
"NotIpAddress": {
"aws:VpcSourceIp": [
"124.215.101.111/32",
"60.112.161.29/32"
]
}
}
}
]
}
「aws:userId」は以下のコマンドで確認できます。
以下のコマンドを実行する際はバックアッププランを設定するIAMユーザーで実行してください。
aws sts get-caller-identity
コマンドを実行すると以下のような結果が返ってきます。
この中の「UserId」をバケットポリシーに設定してください。
{
"UserId": "AIDxxxxxxxxxxxxxxxxx",
"Account": "1111111111111",
"Arn": "arn:aws:iam::1111111111111:user/test"
}
ちなみに以下のブログで紹介されていますが、AWS BackupのサービスロールのUserIdも設定しないとバックアップの取得時にエラーになるようです。 https://dev.classmethod.jp/articles/tsnote-s3-bucketpolicy-ip-address-aws-backup-failed-001/
ありがとうございます 確認します
ちなみにパブリックIPでアクセス制御するのであれば以下のようにする必要があります。
"NotIpAddress": { "aws:SourceIp": [ "124.215.101.111/32", "60.112.161.29/32" ] }
ご丁寧にありがとうございます。 こちら、確認しました。 これから、諸々再構築をはじめます。 その際に、反映させていただきます。
こちら、結論、うまくできました。 ご協力、ありがとうございました。 感謝いたします。
ありがとうございます。 質問よろしいでしょうか? 「AWS BackupのIAMロールのARN」というのは、AWS Backupのプランを作成しているユーザのARNという解釈でよろしいでしょうか?
いえ、AWS Backupのサービスロールです。 コンソールから作成すると「AWSBackupDefaultServiceRole」みたいなものが作成されていると思います。 このIAMロールがAWS Backupに紐づいていると思いますので、ARNを許可するような形です。 https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/iam-service-roles.html
S3バケットの選択自体はIAMユーザーが行っていると思うので、バックアッププランを作成しているIAMユーザーのARNも許可する必要があるかもしれません。
私の環境で上記のバケットポリシー使ってみましたがダメそうでした(S3バケットが選択できませんでした) IP制限側のポリシーを削除して試すと成功したので、おそらくIP制限を付けているとダメみたいです。