

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

# ポータルのカスタムドメインの設定
<a name="configure-custom-domains"></a>

## 仕組み
<a name="custom-domains-how-it-works"></a>

カスタムドメインを設定する場合:
+ カスタムドメインを使用してリバースプロキシを作成して設定し、ポータルエンドポイントにトラフィックをルーティングします。
+ ユーザーは、デフォルトのポータルエンドポイントではなく、カスタムドメインを介してポータルにアクセスします。
+ SSL 証明書は、プロセス全体で安全な接続を確保します。

## 前提条件
<a name="custom-domains-prerequisites"></a>

カスタムドメインを設定する前に、以下を確認してください。
+ Amazon Route53 などの DNS サービスプロバイダーを通じて管理するドメイン名。
+ WorkSpaces Secure Browser ポータル。ポータルの作成の詳細については、「」を参照してください[Amazon WorkSpaces Secure Browser でのウェブポータルの作成](getting-started-step1.md)。
+ AWS Certificate Manager、CloudFront、および DNS 設定を管理するために必要なアクセス許可があることを確認します。

**重要**  
ユーザーは、適切なポータル機能を確保するために、ブラウザでカスタムドメインのサードパーティー Cookie を有効にする必要があります。  
ポータルのセキュリティと機能を維持するために、カスタムドメインとその DNS レコードを所有し、適切に管理していることを確認します。

**注記**  
カスタムドメインのシングルサインオン拡張機能を有効にするには、ユーザーはブラウザに 1.0.2505.6608 以降のバージョンで拡張機能をインストールする必要があります。  
ユーザーがポータルにサインインすると、拡張機能をインストールするように求められます。拡張機能のユーザーエクスペリエンスの詳細については、「[Amazon WorkSpaces Secure Browser のシングルサインオン拡張機能](extension.md)」を参照してください。

## 開始方法
<a name="custom-domains-getting-started"></a>

カスタムドメインは、新しいポータルを作成するとき、または既存のポータルを編集するときに、ポータル設定属性として設定できます。これは、 AWS コンソール、SDK、CloudFormation、または AWS CLI コマンドを使用して実行できます。

Amazon CloudFront ディストリビューションを、カスタムドメインから WorkSpaces Secure Browser ポータルエンドポイントにトラフィックをルーティングするリバースプロキシとして設定することをお勧めします。

**注記**  
Amazon CloudFront はリバースプロキシソリューションとして推奨されますが、代替のリバースプロキシ設定を使用できます。Amazon CloudFront のセットアップ手順で説明されているように、必要なオリジンとキャッシュの設定を満たしていることを確認します。

## CloudFront をリバースプロキシとして設定する
<a name="custom-domains-getting-started"></a>

リバースプロキシの設定を完了するには、以下が必要です。
+ ( AWS Certificate Manager ACM) を介した SSL 証明書
+ Amazon CloudFront ディストリビューション
+ DNS レコード
+ カスタムドメインで設定されたポータル

**SSL 証明書**

まだない場合は、以下の手順に従って ACM を通じてリクエストします。

1. で ACM コンソールに移動します[https://console.aws.amazon.com/acm](https://console.aws.amazon.com/acm)。
**重要**  
CloudFront では証明書をそこに保存する必要があるため、米国東部 (バージニア北部) リージョンを使用します。

1. 証明書をリクエストする:
   + 新しい ACM ユーザーの場合: **証明書のプロビジョニング**で**開始**するを選択します
   + 既存の ACM ユーザーの場合: **証明書のリクエスト**を選択します

1. **「パブリック証明書のリクエスト**」を選択し、**「証明書のリクエスト**」を選択します。
**注記**  
既存の証明書をインポートすることもできます。詳細については、[「ACM ユーザーガイド」の「ACM への証明書のインポート](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)」を参照してください。 **

1. プライマリドメイン名 ( など**myportal.example.com**) を入力します。

1. 検証方法を選択します。
   + **DNS 検証** (Route 53 ユーザーに推奨) – ホストゾーンでのレコードセットの自動作成を許可します。詳細については、*「ACM ユーザーガイド*」の[「DNS 検証](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-dns.html)」を参照してください。
   + E **メール検証** – 詳細については、*「ACM ユーザーガイド*」の「E [メール検証](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-email.html)」を参照してください。

1. 設定を確認し、**確認とリクエスト**を選択します。

**CloudFront ディストリビューション**

カスタムドメインからポータルエンドポイントにリクエストをプロキシする CloudFront ディストリビューションを作成します。

1. で CloudFront コンソールに移動します[https://console.aws.amazon.com/cloudfront](https://console.aws.amazon.com/cloudfront)。

1. **[ディストリビューションを作成]** を選択します。
   + **ディストリビューション名**: ディストリビューションの名前を入力します
   + **ディストリビューションタイプ**: 単一のウェブサイトまたはアプリ
**注記**  
カスタムドメインが同じ AWS アカウントの Route 53 で管理されている場合、CloudFront は自動的に DNS を管理できます。カスタムドメインを入力し、「ドメインの確認」をクリックします。別の DNS プロバイダーのドメインがある場合は、このステップをスキップして後でドメインを設定します。

1. オリジン設定を構成します。
   + **オリジンタイプ**: その他
   + **カスタムオリジン**: ポータルエンドポイント {{<portalId>}}.workspaces-web.com を入力します。
   + **オリジンパス**: 空のままにします (デフォルト)

1. オリジン設定をカスタマイズする:
   + カスタムヘッダーを追加する
**重要**  
カスタムドメインを介したポータルアクセスは、このヘッダーがプロキシリクエストに存在する場合にのみ機能します。ヘッダー名と値が、記載されているとおりに正確に指定されていることを確認します。
     + **ヘッダー名**: workspacessecurebrowser-custom-domain
     + **値**: カスタムドメイン (例: **myportal.example.com**)
   + **プロトコル**: HTTPS のみ
   + **HTTPS ポート**: 443 (デフォルトを保持)
   + **最小オリジナル SSL プロトコル**: TLSv1.2 (デフォルト)
   + **オリジン IP アドレスタイプ**: IPv4 のみ (Amazon WorkSpaces Secure Browser は、この管理ガイドの作成時に IPv6 をサポートしていません）。

1. キャッシュ設定をカスタマイズします。
   + **ビューワープロトコルポリシー**: HTTP を HTTPS にリダイレクトする
   + **許可される HTTP メソッド**: GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE
   + **キャッシュポリシー**: CachingDisabled
   + **オリジンリクエストポリシー**: AllViewerExceptHostHeader
**重要**  
カスタムドメインを介したポータルアクセスは、オリジンリクエストポリシーが AllViewerExceptHostHeader に設定されている場合にのみ機能します。名前が示すように、このポリシーはリクエストヘッダーからホストヘッダーのみをフィルタリングし、残りのすべてのヘッダーをオリジンに渡します。

1. 必要に応じて WAF を設定できますが、この設定の目的では必要ありません。

1. TLS 証明書の取得で、ステップ 1 で作成した TLS 証明書を選択します。

1. 設定を確認し、**ディストリビューションの作成**を選択します。

**DNS レコード**

ホストゾーンが同じ AWS アカウントにある場合、Cloudfront は Route 53 の DNS レコードを更新して、指定されたドメインからステップ 2 で作成したディストリビューションにトラフィックをルーティングできます。

1. CloudFront 設定に移動する

1. 「ドメインを CloudFront にルーティングする」をクリックします。

1. 「ルーティングを自動的にセットアップする」をクリックします。

別のサービスプロバイダーまたは別の AWS アカウントのカスタムドメインに DNS を設定している場合は、ドメインのトラフィックをディストリビューションにルーティングするように DNS プロバイダーを設定します。次の手順では、Route 53 を使用してこれを行う方法について説明します。

1. で Amazon Route 53 コンソールを開きます[https://console.aws.amazon.com/route53](https://console.aws.amazon.com/route53)。

1. DNS 管理にアクセスします。
   + この AWS アカウントで Route 53 を初めて使用する場合は、Amazon Route 53 の概要ページが開きます。DNS 管理で、**今すぐ開始 **を選択します。
   + この AWS アカウントで Route 53 を以前に使用したことがある場合は、次のステップに進みます。

1. ナビゲーションペインで [**Hosted zones**] を選択します。

1. ホストゾーンがまだない場合は作成します。
   + インターネットトラフィックをリソースにルーティングするには、*Amazon Route 53 * [デベロッパーガイド」の「パブリックホストゾーン](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html)の作成」を参照してください。
   + VPC でトラフィックをルーティングするには、*Amazon Route 53 * [デベロッパーガイド」の「プライベートホストゾーン](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html)の作成」を参照してください。

1. **ホストゾーン**ページで、管理するホストゾーンの名前を選択します。

1. [**Create Record Set (レコードセットの作成)**] を選択します。

1. ドメインのエントリを作成します (例: **myportal.example.com**)。
   + **タイプ**: A – IPv4 アドレス
   + **Alias (エイリアス)**: あり
   + **エイリアスターゲット**: CloudFront ディストリビューション URL

   他の設定はすべてデフォルト値のままにしておきます。

**注記**  
Route 53 を使用してドメインの DNS を管理していない場合は、DNS サービスプロバイダーを使用し、ドメインを指す DNS エントリを CloudFront ディストリビューションの URL に追加します。

**または、次の CloudFormation テンプレートを使用して CloudFront ディストリビューションを作成することもできます。**

この CloudFormation テンプレートは、CloudFront ディストリビューションを自動的に作成し、リバースプロキシ設定を設定し、オプションで Route53 DNS レコードを作成します。

**Example workspaces-web-custom-domain-template.yaml**  

```
AWSTemplateFormatVersion: '2010-09-09'
Description: 'CloudFront Distribution for custom domain configuration with existing AWS WorkSpaces Secure Browser Portal'

Parameters:
  PortalEndpoint:
    Type: String
    Description: 'The endpoint of your existing WorkSpaces Web Portal (e.g., abc123.workspaces-web.com)'
    AllowedPattern: '^[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)?\.workspaces-web\.com$'
    ConstraintDescription: 'Must be a valid WorkSpaces Web portal endpoint'
  
  CustomDomainName:
    Type: String
    Description: 'Custom domain name for the portal (e.g., myportal.example.com)'
    AllowedPattern: '^([a-zA-Z0-9]?((?!-)([A-Za-z0-9-]*[A-Za-z0-9])\.)+[a-zA-Z0-9]+)$'
    ConstraintDescription: 'Must be a valid domain name'
  
  CertificateArn:
    Type: String
    Description: 'ARN of the validated SSL certificate in ACM (must be in us-east-1 region for CloudFront)'
    AllowedPattern: 'arn:aws:acm:us-east-1:[0-9]{12}:certificate/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}'
    ConstraintDescription: 'Must be a valid ACM certificate ARN in us-east-1 region'
  
  CreateRoute53Record:
    Type: String
    Description: 'Create Route53 record for custom domain (requires existing hosted zone)'
    Default: 'No'
    AllowedValues:
      - 'Yes'
      - 'No'
  
  HostedZoneId:
    Type: String
    Description: 'Route53 Hosted Zone ID for the custom domain (required if creating Route53 record)'
    Default: ''

Conditions:
  ShouldCreateRoute53Record: !And
    - !Equals [!Ref CreateRoute53Record, 'Yes']
    - !Not [!Equals [!Ref HostedZoneId, '']]

Resources:
  # CloudFront Distribution
  CloudFrontDistribution:
    Type: AWS::CloudFront::Distribution
    Properties:
      DistributionConfig:
        Aliases:
          - !Ref CustomDomainName
        Comment: !Sub 'CloudFront distribution for WorkSpaces Web Portal - ${CustomDomainName}'
        Enabled: true
        HttpVersion: http2
        IPV6Enabled: false  # WorkSpaces Secure Browser does not support IPv6
        PriceClass: PriceClass_All
        
        # Origin Configuration
        Origins:
          - Id: WorkSpacesWebOrigin
            DomainName: !Ref PortalEndpoint
            CustomOriginConfig:
              HTTPSPort: 443
              OriginProtocolPolicy: https-only
              OriginSSLProtocols:
                - TLSv1.2
            OriginCustomHeaders:
              - HeaderName: workspacessecurebrowser-custom-domain
                HeaderValue: !Ref CustomDomainName
        
        # Default Cache Behavior
        DefaultCacheBehavior:
          TargetOriginId: WorkSpacesWebOrigin
          ViewerProtocolPolicy: https-only
          AllowedMethods:
            - GET
            - HEAD
            - OPTIONS
            - PUT
            - POST
            - PATCH
            - DELETE
          Compress: false
          # Cache Policy: CachingDisabled (using predefined managed policy)
          CachePolicyId: 4135ea2d-6df8-44a3-9df3-4b5a84be39ad
          # Origin Request Policy: AllViewerExceptHostHeader (using predefined managed policy)
          OriginRequestPolicyId: b689b0a8-53d0-40ab-baf2-68738e2966ac
        
        # SSL Configuration
        ViewerCertificate:
          AcmCertificateArn: !Ref CertificateArn
          SslSupportMethod: sni-only
          MinimumProtocolVersion: TLSv1.2_2021
      
      Tags:
        - Key: Name
          Value: !Sub '${AWS::StackName}-cloudfront'

  # Route 53 Record (optional - requires hosted zone to exist)
  Route53Record:
    Type: AWS::Route53::RecordSet
    Condition: ShouldCreateRoute53Record
    Properties:
      HostedZoneId: !Ref HostedZoneId
      Name: !Ref CustomDomainName
      Type: A
      AliasTarget:
        DNSName: !GetAtt CloudFrontDistribution.DomainName
        HostedZoneId: Z2FDTNDATAQYW2  # CloudFront Hosted Zone ID
        EvaluateTargetHealth: false

Outputs:
  PortalEndpoint:
    Description: 'WorkSpaces Web Portal endpoint used as origin'
    Value: !Ref PortalEndpoint
    Export:
      Name: !Sub '${AWS::StackName}-PortalEndpoint'
  
  CustomDomainEndpoint:
    Description: 'Custom domain endpoint for the portal'
    Value: !Sub 'https://${CustomDomainName}'
    Export:
      Name: !Sub '${AWS::StackName}-CustomDomainEndpoint'
  
  CloudFrontDistributionId:
    Description: 'CloudFront Distribution ID'
    Value: !Ref CloudFrontDistribution
    Export:
      Name: !Sub '${AWS::StackName}-CloudFrontDistributionId'
  
  CloudFrontDomainName:
    Description: 'CloudFront Distribution Domain Name'
    Value: !GetAtt CloudFrontDistribution.DomainName
    Export:
      Name: !Sub '${AWS::StackName}-CloudFrontDomainName'
  
  CertificateArn:
    Description: 'SSL Certificate ARN used by CloudFront'
    Value: !Ref CertificateArn
    Export:
      Name: !Sub '${AWS::StackName}-CertificateArn'

Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
      - Label:
          default: "Existing Portal Configuration"
        Parameters:
          - PortalEndpoint
      - Label:
          default: "Custom Domain Configuration"
        Parameters:
          - CustomDomainName
          - CertificateArn
          - CreateRoute53Record
          - HostedZoneId
    ParameterLabels:
      PortalEndpoint:
        default: "Portal Endpoint"
      CustomDomainName:
        default: "Custom Domain Name"
      CertificateArn:
        default: "SSL Certificate ARN"
      CreateRoute53Record:
        default: "Create Route53 Record"
      HostedZoneId:
        default: "Hosted Zone ID"
```

このテンプレートを使用するには:

1. 上記のテンプレートを として保存します。 `workspaces-web-custom-domain-template.yaml`

1. コンソール AWS 、 AWS CLI、または AWS SDK と特定のパラメータ値を使用してデプロイする

1. デプロイ後、以下のステップ 4 で説明されているように、カスタムドメインを使用してポータルを設定します。

**ポータル設定**

 AWS コンソール、UpdatePortal API、または update-portal AWS CLI コマンドを使用して、カスタムドメインをポータル設定属性として登録します。

1. [https://console.aws.amazon.com/workspaces-web/home](https://console.aws.amazon.com/workspaces-web/home) で WorkSpaces Secure Browser コンソールを開きます。

1. ナビゲーションペインで、**[ウェブポータル]** を選択します。

1. 設定するウェブポータルを選択し、**編集**を選択します。

1. ポータル設定で、カスタムドメインを追加します。

1. ポータル設定を保存します。

**設定をテストする**

設定をテストするには、次の手順に従います。

1. ウェブブラウザを開き、カスタムドメインの URL ( など**https://myportal.example.com**) に移動します。

1. すべてが正しく設定されている場合は、ポータルのサインインページが表示されます。

1. 次に、ブラウザにポータル URL を入力します。IdP にログインすると、カスタムドメインにリダイレクトされます。

1. 最後に、IdP にログインし、ポータルのアプリケーションタイルをクリックします。カスタムドメインにリダイレクトされます。