OpsCLI ® Advanced Compute Operation

OpsCLI: ハンズオン環境構築ガイド

作成者:

OpsCLI

最終更新日:

2024-12-18

ハンズオン環境構築ガイドの目的

本ガイドは、このガイドを閲覧している皆様に、OpsCLIのハンズオンを最後まで完遂できるために必要十分な環境についてご理解いただき、ハンズオン環境の構築および破棄をスムーズに実施できるようになっていただくことを目的に公開しています。

AWS CLIの実行環境

AWS CLI (AWSコマンドラインインタフェース)は、AWSのサービスを管理するための統合ツールです。

AWS CLIは、主に以下の環境で利用することができます。

../_images/figure-env-variety.png
ブラウザ環境 (推奨)

現在主流のブラウザ(Firefox、Chrome、Edge、Mac版Safari)をサポートしており、実行するコンピューター環境に依存せずにAWS CLI(Linux版)を実行することができます。

実行環境依存のトラブルがほとんど無く、AWSの有償サポートも手厚いため、通常利用では最もお勧めの環境となります。

[利用パターン例]

  • EC2インスタンス環境 (SSMセッションマネージャなどでマネジメントコンソールから接続します)

  • CloudShell (コンテナ環境)

Unixシェル

UnixサーバやUnix系クライアントPC(macOS, Linuxなど)上のUnixシェルでAWS CLIを実行することができます。

スクリプトによるAWS CLIの実行など、特定の用途において使用することがあります。 (サーバ環境やクライアント環境で生成したデータを直接AWSに送信する、など)

実行環境依存のトラブルを自力で解決できる必要があります。

[利用パターン例]

  • Linux環境 (EC2インスタンス、オンプレミスサーバーなど)

  • macOS環境 (iMac、MacBook など)

Windowsコマンドライン

WindowsサーバやWindowsクライアントPC上のコマンドプロンプトやPowerShellでAWS CLIを実行することができます。

実行環境依存のトラブルを自力で解決できる必要があります。

注釈

OpsCLIのハンズオンでは、以下のいずれかの環境で動作するAWS CLIを想定しています。

  • 最新のAmazon Linux 2023環境

  • AWS CloudShell環境

それ以外の環境は学習のサポート外となります。

AWS CLIの認証形態

Linux版 AWS CLIの認証形態として、一般的に以下のものを想定することができます。

../_images/figure-type-overview.png
IAMユーザーの永続的な認証情報をAWS外部で使う形態

IAMユーザーの永続的な認証情報(アクセスキー)をAWSの外部(オンプレミスサーバやクライアントPCなど)に持ち出し、AWS外部でAWS CLIを実行する形態です。

  • オンプレミスサーバー

  • クライアントPC

IAMユーザーの永続的な認証情報をAWS内部で使う形態

IAMユーザーの永続的な認証情報(ログインプロファイル: マネジメントコンソールのパスワード)をAWSの外部(クライアントPCなど)に持ち出し、ブラウザ経由でAWS CLIを実行する形態です。

  • CloudShell (IAMユーザー権限で実行する場合)

IAMロールの一時的な認証情報を使う形態

AWS内部で、一時的な認証情報により、AWS CLIを実行する形態です。

  • CloudShell (スイッチロールなどをして、IAMロール権限で実行する場合)

  • EC2インスタンス (EC2インスタンスに付与したIAMロール権限で実行する場合)

    • マネジメントコンソールからSSMセッションマネージャーなどでEC2インスタンスにアクセスするケース

    • SSL公開鍵などでAWS外部からEC2インスタンスにアクセスするケース

ハイリスクな認証形態

以下の「IAMユーザーの永続的な認証情報」を利用する形態は、原則としては利用しないことをお奨めいたします。

  • IAMユーザーの永続的な認証情報をAWS外部で使う形態

  • IAMユーザーの永続的な認証情報をAWS内部で使う形態

../_images/figure-type-risk-high.png

IAMユーザーに強い権限を付与し、IAMユーザーの数が多い場合、永続的な認証情報の漏洩が、即時に大きなインシデントに直結し得ます。 特に、インタラクティブな操作を想定しているIAMユーザーは、幅広く強い権限を付与されがちなため、その認証情報の漏洩は、大きなダメージとなります。

「IAMユーザーの数」と「IAMユーザーの権限の強さ」が「永続的認証情報の漏洩リスク」の大きさに比例することは意識していただきたいと思います。

重要

AWS CLIのインタラクティブな操作を、IAMユーザーで行うことは、現在ではアンチパターンになっています。

ローリスクな認証形態

今日のAWS CLI利用において、インタラクティブなAWS CLI操作は、IAMロール権限によって行うことが大原則となります。

IAMロールは一時的な認証情報を利用するため、万が一その認証情報が漏洩しても、デフォルト設定で1時間(最大でも12時間)で失効してしまいます。 更に、IAMロールの利用環境が堅牢であれば、IAMロールから一時的な認証情報が漏洩すること自体が困難になります。

../_images/figure-type-risk-low.png
CloudShell

マネジメントコンソール上のスイッチロールやAWS APIのsts AssumeRoleアクションなどにより、IAMロールを利用する状態にして、CloudShellでAWS CLIを操作します。

CloudShellのコンテナ環境から意図的に一時的な認証情報を取り出さない限り、認証情報が漏洩することはありません。

EC2インスタンス

パブリック環境にあるEC2インスタンスにIAMロール権限を付与してAWS CLIを操作します。

パブリック環境にあるEC2インスタンス環境は、以下の経路で、IMDS(インスタンス メタデータ サービス)から一時的な認証情報が漏洩するリスクがあります。

  • 不正にログインして、EC2インスタンスのIMDSから一時的な認証情報を取得される場合。 (SSH秘密鍵の漏洩など)

  • EC2インスタンスのIMDSに、外部からアクセスできる状態になっている場合。 (プロキシー設定のミスなど)

外部からのアクセスに対しては、IMDSのバージョン1(リクエスト/レスポンスメソッド)を無効にし、バージョン2(セッション志向メソッド)のみを利用することで回避できるようになります。

重要

AWS CLIのインタラクティブな操作は、IAMロールの権限で行うことが、現在のベストプラクティスとなっています。

認証と認可の分離

OpsCLIのハンズオンは、原則としてIAMロールの権限で行います。 そのため、認証に使用するID(IAMユーザーなど)に対しては、何の権限も付与しないことを推奨します。

また、用途に応じて複数のIAMロールを切り替えて使用します。 このようなやり方を、ここでは「認証認可分離モデル」(図の下段)と呼びます。

../_images/figure-auth-model.png

ハンズオン実行環境の構築手順

OpsCLIでは、「認証認可分離モデル」に基づくハンズオン実行環境の構築・破棄手順を、以下の通り提供しています。 ご活用ください。

注釈

OpsCLIのコンテンツは、以下の手順で構築された環境以外での動作を確認していません。 必ず、これらの手順通りにハンズオン環境を構築するようにお願いいたします。

(本手順による環境以外での操作については、サポート対象外となります。)

環境を準備する方向け

IAMユーザー + CloudShell (CFn利用)

2024-12-18公開

IAMユーザーとCloudShellを使用するOpsCLIハンズオン用環境の構築手順です。 本手順ではCloudFormationを利用してスピード構築をします。

詳細

このドキュメントの下位ドキュメント