でフェデレーティッド ID を設定する AWS Tools for PowerShell - AWS Tools for PowerShell

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

でフェデレーティッド ID を設定する AWS Tools for PowerShell

組織のユーザーが AWS リソースにアクセスできるようにするには、セキュリティ、監査可能性、コンプライアンス、ロールとアカウントの分離をサポートする機能のために、標準で繰り返し可能な認証方法を設定する必要があります。フェデレーティッドAPIアクセス AWS APIsなしで にアクセスする機能をユーザーに付与することは一般的ですが、フェデレーションを使用する目的を打ち負かす AWS Identity and Access Management (IAM) ユーザーも作成する必要があります。このトピックでは、フェデレーティッドアクセスソリューションを容易に AWS Tools for PowerShell する での SAML (Security Assertion Markup Language) サポートについて説明します。

SAML で をサポート AWS Tools for PowerShell することで、サービスへの AWS フェデレーティッドアクセスをユーザーに提供できます。SAML は、ユーザー認証と承認データをサービス間、特に ID プロバイダー (Active Directory フェデレーションサービスなど) とサービスプロバイダー ( など) 間で送信するための XMLベースのオープンスタンダード形式です AWS。SAML とその仕組みの詳細については、「Wikipedia」、または「構造化情報規格の推進のための組織 (OASIS)」ウェブサイトのSAML「技術仕様SAML」を参照してください。SAML での のサポート AWS Tools for PowerShell は 2.0 SAML と互換性があります。

前提条件

サポートをSAML初めて使用しようとする前に、次のものを用意する必要があります。

  • 組織の認証情報のみを使用して、コンソールにアクセスするために AWS アカウントと正常に統合されたフェデレーティッド ID ソリューション。Active Directory フェデレーションサービス専用にこれを行う方法の詳細については、IAM「 ユーザーガイドSAML」の「2.0 フェデレーションについて」および「Windows Active Directory、AD FS、および SAML 2.0 AWS の使用へのフェデレーションの有効化」のブログ記事を参照してください。このブログの投稿では AD FS 2.0 について説明していますが、AD FS 3.0 を実行している場合でも手順は似ています。

  • ローカルワークステーションに AWS Tools for PowerShell インストールされている のバージョン 3.1.31.0 以降。

アイデンティティフェデレーティッドユーザーが AWS サービスへのフェデレーティッドアクセスを取得する方法 APIs

以下のプロセスでは、Active Directory (AD) ユーザーが AD FS によってフェデレーションされて AWS リソースにアクセスする方法を大まかに説明します。

Diagram showing federated user access flow to AWS resources via AD FS and Security Token Service.
  1. フェデレーティッドユーザーのコンピュータ上のクライアントは、AD FS に対して認証されます。

  2. 認証が成功すると、AD FS はユーザーにSAMLアサーションを送信します。

  3. ユーザーのクライアントは、SAMLフェデレーションリクエストの一部としてSAMLアサーションを AWS Security Token Service (STS) に送信します。

  4. STS は、ユーザーが引き受けることができるロールの AWS 一時的な認証情報を含むSAMLレスポンスを返します。

  5. ユーザーは、これらの一時的な認証情報を によるリクエストに含めるAPIsことで AWS サービスにアクセスします AWS Tools for PowerShell。

での SAML サポートの仕組み AWS Tools for PowerShell

このセクションでは、 AWS Tools for PowerShell コマンドレットがユーザーの SAMLベースの ID フェデレーションの設定を有効にする方法について説明します。

Diagram showing SAML-based federation flow between organization, AD FS, AWS, and service APIs.
  1. AWS Tools for PowerShell は、Windows ユーザーの現在の認証情報を使用して AD FS に対して認証します。ユーザーが を呼び出すために認証情報を必要とするコマンドレットを実行しようとすると、インタラクティブに認証されます AWS。

  2. AD FS がユーザーを認証します。

  3. AD FS は、アサーションを含む SAML 2.0 認証レスポンスを生成します。アサーションの目的は、user に関する情報を識別して提供することです。 は、SAMLアサーションからユーザーの承認されたロールのリストを AWS Tools for PowerShell 抽出します。

  4. AWS Tools for PowerShell は、AssumeRoleWithSAMLRequestAPIリクエストされたロールの Amazon リソースネーム (ARN) を含むSAMLリクエストを に転送STSします。

  5. SAML リクエストが有効な場合、 は、AccessKeyId、、SecretAccessKeyおよび を含む AWS レスポンスSTSを返しますSessionToken。これらの認証情報は 3,600 秒 (1 時間) 有効です。

  6. ユーザーには、ユーザーのロールAPIsがアクセスを許可されている AWS サービスを操作するための有効な認証情報が付与されました。 は、後続 AWS APIの呼び出しにこれらの認証情報 AWS Tools for PowerShell を自動的に適用し、有効期限が切れると自動的に更新します。

    注記

    認証情報の有効期限が切れ、新しい認証情報が必要になると、 AWS Tools for PowerShell は自動的に AD FS と再認証を行い、次の 1 時間用の新しい認証情報を取得します。ドメイン結合されたアカウントのユーザーの場合、このプロセスはサイレントに行われます。ドメインに参加していないアカウントの場合、 は、再認証する前に認証情報を入力するようユーザーに AWS Tools for PowerShell 促します。

設定コマンドを使用する方法 PowerShell SAML

AWS Tools for PowerShell には、SAMLサポートを提供する 2 つの新しいコマンドレットが含まれています。

  • Set-AWSSamlEndpoint は、AD FS エンドポイントを設定し、エンドポイントにわかりやすい名前を割り当て、必要に応じて、エンドポイントの認証タイプを説明します。

  • Set-AWSSamlRoleProfile は、AD FS エンドポイントと関連付ける必要があるユーザーアカウントのプロファイルを作成または編集します。このエンドポイントは、Set-AWSSamlEndpoint コマンドレットにわかりやすい名前を指定することで識別されます。各ロールプロファイルは、ユーザーが実行を許可されている 1 つのロールにマップします。

    AWS 認証情報プロファイルと同様に、ロールプロファイルにわかりやすい名前を割り当てます。コマンドSet-AWSCredentialレットには同じフレンドリ名を使用できます。または、 AWS サービス を呼び出す任意のコマンドレットの -ProfileNameパラメータの値としても使用できますAPIs。

新しい AWS Tools for PowerShell セッションを開きます。 PowerShell 3.0 以降を実行している場合は、 AWS Tools for PowerShell いずれかのコマンドレットを実行するとモジュールが自動的にインポートされます。 PowerShell 2.0 を実行している場合は、次の例に示すように、「Import-Module」コマンドレットを実行してモジュールを手動でインポートする必要があります。

PS > Import-Module "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1"

Set-AWSSamlEndpointSet-AWSSamlRoleProfile コマンドレットを実行する方法

  1. まず、AD FS システムのエンドポイント設定を行います。最も簡単な方法は、次の手順に示すように、変数にエンドポイントを保存する方法です。プレースホルダーアカウントIDsと AD FS ホスト名は、必ず独自のアカウントIDsと AD FS ホスト名に置き換えてください。Endpoint パラメータに AD FS ホスト名を指定します。

    PS > $endpoint = "https://adfs.example.com/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices"
  2. エンドポイント設定を作成するには、Set-AWSSamlEndpoint パラメータに正しい値を指定して、AuthenticationType コマンドレットを実行します。有効な値には、BasicDigestKerberosNegotiate、および NTLM があります。このパラメータを指定しない場合、デフォルト値は Kerberos になります。

    PS > $epName = Set-AWSSamlEndpoint -Endpoint $endpoint -StoreAs ADFS-Demo -AuthenticationType NTLM

    コマンドレットは、-StoreAs パラメータを使用して割り当てたわかりやすい名前を返すため、次の行で Set-AWSSamlRoleProfile を実行するときにその名前を使用できます。

  3. 次に、Set-AWSSamlRoleProfileコマンドレットを実行して AD FS ID プロバイダーで認証し、ユーザーが実行する権限があるロールのセット (SAMLアサーション内) を取得します。

    Set-AWSSamlRoleProfile コマンドレットは、返された一連のロールを使用して、指定のプロファイルに関連付けるロールを選択するようにユーザーに指示するか、パラメータに指定されたロールのデータが存在することを確認します (存在しない場合、ユーザーに選択するように指示します)。ユーザーに許可されたロールが 1 つのみの場合、コマンドレットは、ユーザーに指示することなく、ロールをプロファイルに自動的に割り当てます。ドメイン結合用途にプロファイルを設定するために認証情報を提供する必要はありません。

    PS > Set-AWSSamlRoleProfile -StoreAs SAMLDemoProfile -EndpointName $epName

    または、 non-domain-joined アカウントの場合は、次の行に示すように、Active Directory 認証情報を指定し、ユーザーがアクセスできる AWS ロールを選択できます。これは、別の Active Directory ユーザーアカウントが存在する場合に、組織内のロールを区別するときに役立ちます (たとえば、管理機能)。

    PS > $credential = Get-Credential -Message "Enter the domain credentials for the endpoint" PS > Set-AWSSamlRoleProfile -EndpointName $epName -NetworkCredential $credential -StoreAs SAMLDemoProfile
  4. どちらの場合も、Set-AWSSamlRoleProfile コマンドレットはプロファイルに保存するロールを選択するように指示します。次の例は、2 つの使用可能なロール ADFS-Dev および ADFS-Production を示しています。IAM ロールは、AD FS 管理者によって AD ログイン認証情報に関連付けられます。

    Select Role Select the role to be assumed when this profile is active [1] 1 - ADFS-Dev [2] 2 - ADFS-Production [?] Help (default is "1"):

    または、RoleARNPrincipalARN、オプションの NetworkCredential パラメータを入力して、プロンプトを表示せずにロールを指定することもできます。指定されたロールが認証によって返されたアサーションにリストされていない場合、ユーザーは使用可能なロールから選択するよう求められます。

    PS > $params = @{ "NetworkCredential"=$credential, "PrincipalARN"="{arn:aws:iam::012345678912:saml-provider/ADFS}", "RoleARN"="{arn:aws:iam::012345678912:role/ADFS-Dev}" } PS > $epName | Set-AWSSamlRoleProfile @params -StoreAs SAMLDemoProfile1 -Verbose
  5. 次のコードに示すように、StoreAllRoles パラメータを追加することで、1 つのコマンドですべてのロールのプロファイルを作成できます。ロール名はプロファイル名として使用されます。

    PS > Set-AWSSamlRoleProfile -EndpointName $epName -StoreAllRoles ADFS-Dev ADFS-Production

ロールプロファイルを使用して AWS 認証情報を必要とするコマンドレットを実行する方法

AWS 認証情報を必要とするコマンドレットを実行するには、 AWS 共有認証情報ファイルで定義されたロールプロファイルを使用できます。ロールプロファイルの名前を Set-AWSCredential (または の任意のProfileNameパラメータの値として AWS Tools for PowerShell) に提供し、プロファイルで説明されているロールの一時的な AWS 認証情報を自動的に取得します。

使用するのは一度に 1 つのロールプロファイルですが、シェルセッション内でプロファイルを切り替えることができます。Set-AWSCredential コマンドレットは、単独で実行した場合、認証を行わず、認証情報を取得しません。コマンドレットは、指定したロールプロファイルの使用をユーザーが希望していることを記録します。 AWS 認証情報を必要とするコマンドレットを実行するまで、認証または認証情報のリクエストは行われません。

これで、SAMLDemoProfileプロファイルで取得した一時的な AWS 認証情報を使用して、 AWS サービス を操作できるようになりましたAPIs。次のセクションでは、ロールプロファイルの使用方法の例を示します。

例 1: Set-AWSCredential でデフォルトロールを設定する

この例では、 を使用して AWS Tools for PowerShell セッションのデフォルトロールを設定しますSet-AWSCredential。次に、認証情報を必要とするコマンドレットを実行できます。これにより、指定されたロールによって権限が付与されます。この例では、Set-AWSCredential コマンドレットで指定されたプロファイルに関連付けられている米国西部 (オレゴン) リージョンにあるすべての Amazon Elastic Compute Cloud インスタンスを一覧表示します。

PS > Set-AWSCredential -ProfileName SAMLDemoProfile PS > Get-EC2Instance -Region us-west-2 | Format-Table -Property Instances,GroupNames Instances GroupNames --------- ---------- {TestInstance1} {default} {TestInstance2} {} {TestInstance3} {launch-wizard-6} {TestInstance4} {default} {TestInstance5} {} {TestInstance6} {AWS-OpsWorks-Default-Server}

例 2: PowerShell セッション中にロールプロファイルを変更する

この例では、SAMLDemoProfileプロファイルに関連付けられたロールの AWS アカウントで使用可能なすべての Amazon S3 バケットを一覧表示します。この例では、 AWS Tools for PowerShell セッションの前半で別のプロファイルを使用していたかもしれませんが、それをサポートするコマンドレットを使用して-ProfileNameパラメータに別の値を指定することでプロファイルを変更できます。これは、 PowerShell コマンドラインから Amazon S3 を管理する管理者にとって一般的なタスクです。

PS > Get-S3Bucket -ProfileName SAMLDemoProfile CreationDate BucketName ------------ ---------- 7/25/2013 3:16:56 AM amzn-s3-demo-bucket 4/15/2015 12:46:50 AM amzn-s3-demo-bucket1 4/15/2015 6:15:53 AM amzn-s3-demo-bucket2 1/12/2015 11:20:16 PM amzn-s3-demo-bucket3

Get-S3Bucket コマンドレットでは、Set-AWSSamlRoleProfile コマンドレットを実行して作成されたプロファイルの名前を指定します。このコマンドは、セッションで以前に (たとえば、Set-AWSCredential コマンドレットを実行して) ロールプロファイルを設定し、Get-S3Bucket コマンドレットに別のロールプロファイルを使用する場合に役立ちます。プロファイルマネージャーは、一時的な認証情報を Get-S3Bucket コマンドレットに使用できるようにします。

認証情報は 1 時間後に期限切れになりますが ( によって強制される制限STS)、 AWS Tools for PowerShell は、ツールが現在の認証情報の有効期限が切れていることを検出したときに新しいSAMLアサーションをリクエストすることで、認証情報を自動的に更新します。

ドメイン結合されたユーザーの場合、現在のユーザーの Windows ID が認証時に使用されるため、このプロセスは中断なしで行われます。ユーザーアカウントの場合 non-domain-joined、 はユーザーパスワードをリクエストする PowerShell 認証情報プロンプト AWS Tools for PowerShell を表示します。ユーザーは、ユーザーの認証に使用する認証情報を指定し、新しいアサーションを取得します。

例 3: リージョンのインスタンスを取得する

次の例では、ADFS-Productionプロファイルで使用されるアカウントに関連付けられているアジアパシフィック (シドニー) リージョン内のすべての Amazon EC2インスタンスを一覧表示します。これは、リージョン内のすべての Amazon EC2インスタンスを返すための便利なコマンドです。

PS > (Get-Ec2Instance -ProfileName ADFS-Production -Region ap-southeast-2).Instances | Select InstanceType, @{Name="Servername";Expression={$_.tags | where key -eq "Name" | Select Value -Expand Value}} InstanceType Servername ------------ ---------- t2.small DC2 t1.micro NAT1 t1.micro RDGW1 t1.micro RDGW2 t1.micro NAT2 t2.small DC1 t2.micro BUILD

その他の参考資料

フェデレーティッドAPIアクセスの実装方法に関する一般的な情報については、「 2.SAML0 を使用したフェデレーティッドAPI/CLIアクセスの一般的なソリューションを実装する方法」を参照してください。

サポートに関する質問やコメントについては、「 スクリプト用 AWS デベロッパーフォーラム」または「」を参照してください。NET PowerShell 開発