Open2

AWS Transfer Family でS3にSFTP接続する

osakanaosakana

サービスマネージドユーザーのIAMロールを作成するとき、「信頼関係」の設定が漏れていた。
これを設定しておかないとだめ。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "transfer.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

https://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/requirements-roles.html

「許可」で s3: 系のやつが付いてるかだけ見ていた・・
信頼関係の設定がない状態だと、サーバーにログインはできるがコマンドが "Permission denied" とかで通らなかった。

osakanaosakana

IAMロールのポリシー定義

S3の話だが、"Resource" の設定を正しくしておかないとだめ。
Actionが十分でも、ls したら "Couldn't read directory: Permission denied" とかでおこられる。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/access-policy-language-overview.html

バケットレベルのオペレーションの例:

  • "Resource": "arn:aws:s3:::bucket_name".

オブジェクトレベルのオペレーションの例:

  • バケットのすべてのオブジェクトの "Resource": "arn:aws:s3:::bucket_name/*"

例)S3内のファイル取得を許可する場合

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::{bucket-name}",
                "arn:aws:s3:::{bucket-name}/*"
            ],
            "Effect": "Allow",
            "Sid": "AllowGetS3Object"
        }
    ]
}