皆さま、こんにちは!y.takanashiです。
いよいよ夏本番となり、暑い日々が続いていますね...!
今回は、以下のドキュメントを基にOCIのアイデンティティ・ドメインの情報を使用して認証を行い、AWSにSSOを行う方法についてご紹介します。
作業手順
- OCI - SSO用アプリを作成
- AWS - プロバイダとロールを作成
- OCI - 属性の追加
- OCI - アプリのアクセスをリクエスト
- 動作確認
OCI - SSO用アプリを作成
最初にOCI側でSSO用アプリを作成します。
OCIコンソール画面左上のハンバーガーメニューから「アイデンティティとセキュリティ」→アイデンティティ内の「ドメイン」を選択します。
任意のドメイン(ここでは「OracleIdentityCloudService」)を選択します。
「統合アプリケーション」から「アプリケーションの追加」を選択します。
「SAMLアプリケーション」→「ワークフローの起動」をそれぞれ選択します。
以下の項目の入力を行い、「終了」を選択します。
- 名前:任意(ここでは「AWS App」)
- 表示設定
- 「自分のアプリケーションに表示」:有効
- 「ユーザーにアクセス権のリクエストを許可」:有効
- 認証と認可
- 権限付与を認可として実施:有効
- 一般
- エンティティID:https://signin.aws.amazon.com/saml
- アサーション・コンシューマのURL:https://signin.aws.amazon.com/saml
- 名前IDフォーマット:永続
- 名前IDの値:プライマリ電子メール
- 追加構成
- 署名付きSSO:アサーション
- 署名ハッシュ・アルゴリズム:SHA-256
- シングル・ログアウトの有効化:無効
- 暗号化されたアサーションが必要:無効
作成後は非アクティブ状態となっており、「アクティブ化」から起動を行います。
作成したSSO用アプリがアクティブ状態となります。
SSO構成の「アイデンティティ・プロバイダ・メタデータのダウンロード」を選択して、メタデータのダウンロードを行います。
※メタデータは作業手順「AWS - IDプロバイダとロールを作成」時に使用します。
AWS - IDプロバイダとロールを作成
OCI側でSSO用のアプリを作成後、AWS側でIDプロバイダとロールの設定を行います。
AWSの「サービス」から、「セキュリティ、ID、およびコンプライアンス」→「IAM」をそれぞれ選択します。
「IDプロバイダ」から「プロバイダを追加」を選択します。
以下の項目を入力、「プロバイダを追加」を選択します。
- プロバイダのタイプ:SAML
- プロバイダ名:任意(ここでは「OCI_IdentityDomain 」)
- メタデータドキュメント:OCI側でアプリ作成時に取得したメタデータをアップロード
作成後にプロバイダを選択、プロバイダのARNをコピーします。
※ARNは作業手順「OCI - 属性の追加」で使用します。
プロバイダの作成後、ロールの作成も行います。
「ロール」から「ロールを作成」を選択します。
以下の項目を入力、「次へ」を選択します。
- 信頼されたエンティティタイプ:SAML 2.0 フェデレーション
- SAML 2.0 ベースのプロバイダー:作成したプロバイダを選択(ここでは「OCI_IdentityDomain 」)
- 許可されるアクセス:プログラムと AWS マネジメントコンソールへのアクセスを許可する
※「プログラムによるアクセスのみを許可する」を選択する場合、リソースの読み取り権限のみ付与されます。
続いて、SSOを行うユーザーに付与するポリシーを指定し、「次へ」を選択します。
ここでは管理者権限を付与したいため、「AdministratorAccess」にチェックを入れます。
ロール名に任意のロール名(ここでは「OCI_IdentityDomain」) を入力、「ロールの作成」を選択します。
作成後にロールを選択、ロールのARNをコピーします。
※プロバイダと同様に作業手順「OCI - 属性の追加」で使用します。
OCI - 属性の追加
AWSでプロバイダとロールの設定を行った後、OCI側で作成したSSO用アプリに「属性」としてAWSのプロバイダとロールの情報を付与します。
作成したアプリの「SSO構成の編集」を選択します。
属性構成内の「+ 追加属性」から以下の項目を入力後、「変更の保存」を選択します。
- 属性1
- 名前:https://aws.amazon.com/SAML/Attributes/RoleSessionName
- 形式:基本
- タイプ:ユーザー属性
- タイプ値:プライマリ電子メール
- 属性2
- 名前:https://aws.amazon.com/SAML/Attributes/Role
- 形式:基本
- タイプ:式/リテラル
- タイプ値:"ロールARN","プロバイダARN"
※「AWS - IDプロバイダとロールを作成」でコピーしたARNをそれぞれペーストします。
AWSのプロバイダとロールの情報を付与した属性が追加されます。
OCI - アプリのアクセスをリクエスト
属性の追加後、アプリに対するアクセス権が無い場合のリクエストを行う手順について紹介します。
OCIコンソール画面右上の人型アイコンから「自分のプロファイル」を選択します。
「統合アプリケーション」から、「新規アプリケーションへのアクセスのリクエスト」を選択します。
マイコンソール画面が表示されるので、「追加」を選択します。
作成したアプリケーションが表示されるので「+」を選択、理由を入力して「OK」を選択してアクセスのリクエストを行います。
リクエスト後、オラクルから完了のメールが送信されます。
リクエストが正常に受理された場合、上記のメールから数分後に以下の内容のメールが届きます。
受理された後は、マイ・プロファイル内の「統合アプリケーション」内にSSO用アプリが追加されます。
またSSO用アプリの「ユーザー」から、リクエストを受理したユーザー一覧を表示できます。
以上でAWSにSSOを行うための全ての設定は完了です。
動作確認
設定後、OCIの認証情報を元にAWSにSSOができるかどうかの動作確認を行います。
自分のプロファイル内の「他のアクション」から「『自分のアプリケーション』コンソールの表示」を選択します。
マイコンソール画面に作成したSSO用のアプリが表示されるので、それを選択します。
選択後、OCIのログイン画面に遷移せず、直接AWSのコンソール画面が表示されます。
なお、上記の手順を実施した場合、ユーザーIDの最初の部分がIDプロバイダ名となります。
今回の作業については以上で完了となります。
まとめ
今回はOCIのアイデンティティ・ドメインの情報を元に認証を行い、AWSにログインする手順を紹介しました。
上記の設定を実施することで、AWSの作業が簡略され便利に利用することができます。
今回はAWSにSSOする手順を紹介しましたが、Azureや他のクラウドベンダーでも連携できる可能性があるので、今度試してみてみようと思います。
以上となります。
この記事を通じて読者の皆様の問題解決の一助となれば幸いです。
最後まで読んで頂き、ありがとうございましたm(_ _)m