LoginSignup
3
1

More than 1 year has passed since last update.

Okta→AWSコンソールのSSO(SAML)とプロビジョニング

Posted at

AWSのSSOとプロビジョニングについて

OktaでAWSコンソールにSSOとプロビジョニングする方法を記述します。
ユーザープロビジョニングというとIDPでアカウントを作成するとSP(service provider)側にもアカウントが作成され同期されるという認識でしたが、AWSにおいてはSSOするときにそのセッションにロールを付与し、仮想のIAMユーザーを作成し、接続させることをプロビジョニングとしています(と私は思っています)。SSOするIAMユーザーは実際に作成されることはありませんので、セッションが切れればIAMも情報も消えます。当然、IDPでアカウント削除した後、IAMユーザーの削除し忘れも発生しません。

因みにAWS CloudTrailに証跡は残ります。

前提

  • AWSアカウント作成済み(IAM ユーザー、ロール、ポリシー、IDプロバイダーの作成権限が必要です。)
  • Oktaアカウント作成済み

Oktaにアプリケーションを追加

Oktaの管理画面から「Applications」>「Applications」>「Browse App Catalog」をクリックします。
image.png
検索ボックスに「aws」などと入力し「AWS Account Federation」を選択します。
image.png
「Add」をクリックします。
image.png
そのまま「Next」をクリックします。「Application Label」や「Login URL」はあとで変更可能です。
image.png
「SAML 2.0」を選択します。
image.png
その他はとりあえずそのままで「Done」をクリックします。
image.png
これでOktaにアプリケーションが作成されました。
image.png
AWSのIDプロバイダ登録に使用するためリンク先をxmlでダウンロードしておきます。
「Sign On」タブ > 「Identity Provider metadata」
image.png

AWS IAMリソース作成

IDプロバイダ作成

「IAM」 > 「アクセス管理」 > 「IDプロバイダ」 > 「プロバイダを追加」をクリックします。
image.png
「SAML」を選択
「プロバイダ名」に任意の名前(e.g. Okta)
「メタデータドキュメント」にOktaで先ほどダウンロードしたXMLメタデータをアップロードします。
「プロバイダを追加」をクリックします。
image.png
IDプロバイダにOktaが作成されました。
image.png

IAMロール作成

SSOした時の権限付与するロールを作成します。
「IAM」 > 「アクセス管理」 > 「ロール」 > 「ロールを作成」をクリックします。
image.png
「SAML 2.0 フェデレーション」を選択
「SAMLプロバイダー」に先ほど作成したOktaを選択
「プログラムによるアクセスと AWS マネジメントコンソールによるアクセスを許可する」を選択
「次のステップ:アクセス権限」をクリックします。
image.png
「次のステップ:タグ」をクリックします。
image.png
「次のステップ:確認」をクリックします。
image.png
任意の名前(e.g. OktaFederatedRole)を設定し、「ロールの作成」をクリックします。
image.png

IAMユーザー作成

OktaがAWSのロールをAPI参照するためのIAMユーザーを作成します。
「IAM」 > 「アクセス管理」 > 「ユーザー」 > 「ユーザーを追加」をクリックします。
image.png
「ユーザー名」に任意の名前(e.g. OktaSSOuser)を設定
「アクセスキー - プログラムによるアクセス」にチェック
「次のステップ:アクセス権限」をクリックします。
image.png
「既存のポリシーを直接アタッチ」を選択し、「ポリシーの作成」をクリックします。
image.png
ポリシー作成タブが開くので、JSONを以下のJSONで上書きします。「次のステップ:タグ」をクリックします。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:ListRoles",
        "iam:ListAccountAliases"
      ],
      "Resource": "*"
    }
  ]
}

image.png
「次のステップ:確認」をクリックします。
image.png
「名前」に任意の名前(e.g. OktaSSOCommandPolicy)を設定し、「ポリシーの作成」をクリックします。
image.png
ユーザー作成画面に戻り、作成したポリシーにチェックし「次のステップ:タグ」をクリックします。
image.png
「次のステップ:確認」をクリックします。
image.png
「ユーザーの作成」をクリックします。
image.png
「.csvのダウンロード」をクリックし、アクセスキーIDとシークレットアクセスキーをダウンロードします。
image.png

Okta SSO/プロビジョニング設定

SSO設定

AWSで先ほど作成したIDプロバイダのOktaのARNをコピーします。
image.png
Oktaのアプリ詳細画面で「Sign On」タブを開き、「Edit」をクリックします。
image.png
「Advanced Sign-on Settings」の「Identity Provider ARN (Required only for SAML SSO)」に先ほどのARNを設定し、「Save」をクリックします。
image.png

プロビジョニング設定

Oktaのアプリ詳細画面で「Provisioning」タブを開き、「Configure API Integration」をクリックします。
image.png
「Enable API integration」にチェックを入れ、「Access Key」「Secret Key」は先ほど作成したAWSユーザーのキーを設定します。「Save」をクリックします。
image.png
「Save」後、接続テストのようなものが行われ、問題なければ以下のような画面になります。「Edit」をクリックします。
image.png
「Create Users」と「Update User Attributes」にチェックをし「Save」をクリックします。
image.png

ユーザーのアサイン

Oktaのアプリ詳細画面で「Assignments」タブを開き、「Assign」 > 「Assign to People」をクリックします。
image.png
モーダルウィンドウが開くので、アサインしたいユーザーの「Assing」をクリックします。
image.png
「SAML User Roles」で先ほど作成したロール(e.g. OktaFederatedRole)にチェックを付け、「Save and Go Back」をクリックします。
image.png
「Done」をクリックします。
image.png
これでAWSコンソールにSSOできるようになります。
ログインするユーザーはIAMユーザーとしては追加されません。ログイン名はOktaFederatedRole/Oktaのname属性となります。AWSへのセッションにロールを紐付けてアクセスするイメージです。
image.png

Oktaの公式手順書

今回のSSOの設定手順はアプリの詳細画面から表示できます。「View Setup Instructions」をクリックすると、英語ですが、AWS側の設定も記述された丁寧な手順書が確認できます。この記事はこの手順書に沿っています。
image.png

3
1
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
3
1