4
4

CyberduckでS3にAWS IAM Identity Center(旧AWS SSO)で接続する方法

Last updated at Posted at 2024-09-04

これはなに

タイトルの通りですが

  • AWS IAM Identity Center(旧AWS SSO)のアクセス情報をもらった!けどCyberDuckでS3にアクセスできない!
  • AWS IAM Identity Center(旧AWS SSO)に切り替えていきたい!けどCyberduckを利用しているメンバーにS3への接続方法をどう伝えれば…?

となっている人の助けになれば

お急ぎの方は

序文

(2024/09/04現在)

旧来はS3へのアクセスにIAMユーザを作成し

AWS_ACCESS_KEY_ID=XXX
AWS_SECRET_ACCESS_KEY=XXX

のようにアクセスキーを利用することが一般的だったように思います。
しかし最近はアクセスキーのような長期的認証情報を作成することは非推奨になっています。

IAM Identity Center(旧AWS SSO)がよく利用されるようになり、ブラウザやCLIから利用する分にはセキュアで大変便利です。

しかし、GUIアプリでは問題があります。
IAM Identity Centerでは一時的な認証情報が発行されますが、AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEYの他に AWS_SESSION_TOKEN の設定が必要です。
これに対応していない、または対応していても非常にわかりにくいものが多い印象です。

私はS3へのファイルアップロードにCyberDuckをよく利用しますが、設定が複雑だったのでここにまとめます。

Cyberduckでの設定方法

Cyberduck公式に記載があります。
https://docs.cyberduck.io/protocols/s3/#connecting-using-credentials-from-aws-command-line-interface

が、すんなり設定できなかったので噛み砕いて説明します。

前提条件

(必ずしもこれではないと動かないということはないと思いますが)

macOS Sonoma 14.6.1
Cyberduck 9.0.1
aws-cli 2.9.16

事前設定

Cyberduckのインストール

(インストール済みなら次へ)

AWS CLIのインストール

(インストール済みなら次へ)

インストールの確認は以下コマンドでバージョン番号が表示されること。

aws --version

AWS CLIにIAM Identity Centerの設定(profile)を追加

(設定済みなら次へ)

  • まずはブラウザでAWS access portalにアクセスできることを確認
    ss- 2024-09-04 10.33.20.png

  • 上記画面のURLを覚えておく
    以下は https://xxx.awsapps.com/start/... だった場合の設定例

  • AWS のprofile名を決める
    ここではSOMEプロジェクト用のAWSアカウントのAdministratorAccessロールとしてxxx_some_adminとする

  • AWS CLIでSSOの設定をする

    $ aws configure sso --profile xxx_some_admin
    SSO session name (Recommended): xxx-sso
    SSO start URL [None]: https://xxx.awsapps.com/start
    SSO region [None]: ap-northeast-1
    SSO registration scopes [None]: sso:account:access
    
    • ブラウザが起動してAWSへのアクセス許可を求められるので許可する
    • ターミナルに戻る
    • 利用できるAWSアカウントが列挙されるので選択する(例 999999999999)
      • 1つしかない場合はスキップされるかも
    • 利用できるロールが列挙されるので選択する(例 AdministratorAccess)
      • 1つしかない場合はスキップされるかも
    • リージョンを聞かれるので設定する(東京ならap-northeast-1)
    • CLI default output formatを指定(大抵jsonで良い)
    • ~/.aws/config に設定が追加される(テキストエディタで直接編集しても良い)
      [sso-session xxx-sso]
      sso_start_url = https://xxx.awsapps.com/start
      sso_region = ap-northeast-1
      sso_registration_scopes = sso:account:access
      
      [profile xxx_some_admin]
      sso_session = xxx-sso
      sso_account_id = 999999999999
      sso_role_name = AdministratorAccess
      region = ap-northeast-1
      output = json
      

Cyberduckにprofile(cyberduckprofile)を追加

(設定済みなら次へ)

Cyberduckはprofile(拡張子.cyberduckprofile)で接続方法を追加することができる。
以下のS3 (Credentials from AWS Command Line Interface) profile for preconfigured settingsをダウンロードしてダブルクリックする。

ss- 2024-09-04 11.50.23.png

CyberDuckの環境設定→Profilesで上記が追加されていればOK

以上で事前準備は完了です

おつかれさまでした。

CyberduckでS3に接続する

いよいよ接続です。

AWS CLIでログインする

事前準備で設定したAWS profileでログインする。
以下ではxxx_some_adminの例

aws sso login --profile xxx_some_admin

Cyberduckから認証情報を取得するためにもう1手間
(~/.aws/sso/cache に認証情報がキャッシュされ、CyberDuckがこれを参照する)

aws sts get-caller-identity --profile xxx_some_admin

Cyberduckに接続情報を設定

ブックマーク編集画面で以下を設定
(設定済みなら次へ)

ss- 2024-09-04 12.16.06.png

  • (1) S3 (Credentials from AWS Command Line Interface)を選択
  • (2) AWS profileを指定する
  • (3) S3のバケット名を指定する

接続する

あとは通常通りブックマークから接続すればOKです。

うまくいかない時は

ここからデバッグログを確認できます。
AWSに強い人に助けを求めてみてください。
ss- 2024-09-04 13.35.57.png

私の場合は、~/.aws/config~/.aws/credentials にコメントアウトした行があったのが原因でした。

感想

もっと簡単になってほしい!

おわり

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4