

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

# セキュリティ設定と IAM ロール
<a name="dotnet-migrating-applications-security"></a>

**eb migrate** コマンドは、IAM ロール、インスタンスプロファイル、およびサービスロールを通じて AWS セキュリティ設定を管理します。これらのコンポーネントを理解することで、移行中の適切なアクセスコントロールとセキュリティコンプライアンスを確保できます。

## インスタンスプロファイル設定
<a name="dotnet-migrating-applications-security-instance"></a>

インスタンスプロファイルは、Elastic Beanstalk が環境内の EC2 インスタンスにアタッチする IAM ロールのコンテナとして機能します。**eb migrate** を実行するときに、カスタムインスタンスプロファイルを指定できます。

```
PS C:\migrations_workspace> eb migrate --instance-profile "CustomInstanceProfile"
```

インスタンスプロファイルを指定しない場合、**eb migrate** はこれらのアクセス許可を持つデフォルトプロファイルを作成します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-*",
                "arn:aws:s3:::elasticbeanstalk-*/*"
            ]
        }
    ]
}
```

------

## サービスロールの管理
<a name="dotnet-migrating-applications-security-service"></a>

サービスロールを使用すると、Elastic Beanstalk はユーザーに代わって AWS リソースを管理できます。次のコマンドを使用して、移行中にカスタムサービスロールを指定します。

```
PS C:\migrations_workspace> eb migrate --service-role "CustomServiceRole"
```

指定しない場合、**eb migrate** は、Elastic Beanstalk がロールを引き受けることを許可する信頼ポリシーを持つ `aws-elasticbeanstalk-service-role` という名前のデフォルトのサービスロールを作成します。このサービスロールは、Elastic Beanstalk が環境の状態をモニタリングし、マネージドプラットフォームの更新を実行するために不可欠です。サービスロールには、次の 2 つのマネージドポリシーが必要です。
+ `AWSElasticBeanstalkEnhancedHealth` - Elastic Beanstalk が強化されたヘルスレポートシステムを使用してインスタンスと環境の正常性をモニタリングできるようにします
+ `AWSElasticBeanstalkManagedUpdates` - 新しいプラットフォームバージョンが利用可能になったときに環境リソースを更新するなど、Elastic Beanstalk がマネージドプラットフォームの更新を実行できるようにします

これらのポリシーでは、サービスロールには以下のアクセス許可があります。
+ Auto Scaling グループを作成して管理する
+ Application Load Balancer を作成して管理する
+ Amazon CloudWatch にログをアップロードする
+ EC2 インスタンスを管理する

サービスロールの詳細については、「Elastic Beanstalk デベロッパーガイド」の「[Elastic Beanstalk サービスロール](concepts-roles-service.md)」を参照してください。

## セキュリティグループの構成
<a name="dotnet-migrating-applications-security-sg"></a>

**eb migrate** コマンドは、IIS サイトのバインディングに基づいてセキュリティグループを自動的に設定します。例えば、ソース環境にポート 80、443、8081 を使用するサイトがある場合、次の設定結果になります。

```
<site name="Default Web Site">
    <bindings>
        <binding protocol="http" bindingInformation="*:80:" />
        <binding protocol="https" bindingInformation="*:443:" />
    </bindings>
</site>
<site name="InternalAPI">
    <bindings>
        <binding protocol="http" bindingInformation="*:8081:" />
    </bindings>
</site>
```

移行プロセスは、次のアクションを完了します。
+ インターネットからのポート 80 および 443 でのインバウンドトラフィックを許可するロードバランサーセキュリティグループを作成します (0.0.0.0/0)
+ ロードバランサーからのトラフィックを許可する EC2 セキュリティグループを作成します
+ `--copy-firewall-config` が指定されている場合、追加のポート (8081 など) を設定します

デフォルトでは、Application Load Balancer はインターネットからのパブリックアクセスで設定されます。特定の IP 範囲へのアクセスの制限やプライベートロードバランサーの使用など、この動作をカスタマイズする必要がある場合は、`--vpc-config` パラメータを使用してデフォルトの VPC とセキュリティグループの設定を上書きできます。

```
PS C:\migrations_workspace> eb migrate --vpc-config vpc-config.json
```

例えば、次の `vpc-config.json` 設定では、プライベートサブネットにプライベートロードバランサーを作成します。

```
{
    "id": "vpc-12345678",
    "publicip": "false",
    "elbscheme": "internal",
    "ec2subnets": ["subnet-private1", "subnet-private2"],
    "elbsubnets": ["subnet-private1", "subnet-private2"]
}
```

VPC の設定オプションの詳細については、「[VPC の構成](dotnet-migrating-applications-network.md#dotnet-migrating-applications-network-vpc)」を参照してください。

## SSL 証明書の統合
<a name="dotnet-migrating-applications-security-ssl"></a>

HTTPS バインディングを使用してサイトを移行する場合は、 AWS Certificate Manager (ACM) を介して SSL 証明書を統合します。

```
PS C:\migrations_workspace> eb migrate --ssl-certificates "arn:aws:acm:region:account:certificate/certificate-id"
```

この設定では、次のアクションが完了します。
+ 証明書を Application Load Balancer に関連付ける
+ ロードバランサーでの HTTPS 終端を維持する
+ ロードバランサーと EC2 インスタンス間の内部 HTTP 通信を保持します

## Windows 認証
<a name="dotnet-migrating-applications-security-windows"></a>

Windows 認証を使用するアプリケーションの場合、**eb migrate** は次のようにアプリケーションの `web.config` の認証設定を保持します。

```
<configuration>
    <system.webServer>
        <security>
            <authentication>
                <windowsAuthentication enabled="true">
                    <providers>
                        <add value="Negotiate" />
                        <add value="NTLM" />
                    </providers>
                </windowsAuthentication>
            </authentication>
        </security>
    </system.webServer>
</configuration>
```

**重要**  
**eb migrate** コマンドは、ソース環境からターゲット Elastic Beanstalk インスタンスにユーザープロファイルまたはアカウントをコピーしません。ソースサーバーで作成したカスタムユーザーアカウントまたはグループは、移行後にターゲット環境で再作成する必要があります。

`IUSR` などの組み込み Windows アカウント、`IIS_IUSRS` などのグループ、および他のすべての組み込みアカウントとグループは、ターゲット Windows Server インスタンスにデフォルトで含まれます。組み込み IIS アカウントとグループの詳細については、Microsoft ドキュメントの「[IIS の組み込みユーザーアカウントとグループアカウントを理解する](https://learn.microsoft.com/en-us/iis/get-started/planning-for-security/understanding-built-in-user-and-group-accounts-in-iis)」を参照してください。

アプリケーションがカスタム Windows ユーザーアカウントまたは Active Directory 統合に依存している場合は、移行の完了後にこれらの側面を個別に設定する必要があります。

## ベストプラクティスとトラブルシューティング
<a name="dotnet-migrating-applications-security-best"></a>

### ロールの管理
<a name="dotnet-migrating-applications-security-best-role"></a>

Elastic Beanstalk AWS 環境のロールを管理するときに IAM ベストプラクティスを実装します。

ロールの作成と管理  
+ 可能な場合は、 AWS 管理ポリシーを使用してロールを作成する
+ [IAM セキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)に従う
+ カスタムポリシーに[AWS Policy Generator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) を使用する
+ セキュリティを強化するための[アクセス許可の境界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)を実装する

モニタリングと監査  
ロールの使用状況をモニタリング AWS CloudTrail するには、 を有効にします。  
+ [AWS CloudTrail ユーザーガイド](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)に従う
+ リアルタイムモニタリング用に CloudWatch Logs 統合を設定する
+ 不正な API コールのアラートを設定する

定期的なレビュープロセス  
四半期ごとのレビューサイクルを確立して、次のタスクを実行します。  
+ [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) を使用して未使用のアクセス許可を監査する
+ 古いアクセス許可を削除する
+ 最小特権の原則に基づいてロールを更新する

### 証明書管理
<a name="dotnet-migrating-applications-security-best-cert"></a>

Elastic Beanstalk 環境に SSL/TLS 証明書に関する以下のプラクティスを実装します。

証明書のライフサイクル  
+ 証明書管理に [AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) を使用する
+ ACM 発行証明書の[自動更新](https://docs.aws.amazon.com/acm/latest/userguide/check-certificate-renewal-status.html)を有効にする
+ [有効期限通知](https://docs.aws.amazon.com/acm/latest/userguide/notifications-for-ACM.html)を設定する

セキュリティ標準  
+ TLS 1.2 以降を使用する
+ HTTPS リスナーの[AWS セキュリティポリシー](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies)に従う
+ 必要に応じて HTTP Strict Transport Security (HSTS) を実装する

### セキュリティグループの管理
<a name="dotnet-migrating-applications-security-best-sg"></a>

以下のセキュリティグループのベストプラクティスを実装します。

ルールの管理  
+ すべてのカスタムポート要件を文書化する
+ [VPC フローログ](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)を使用してトラフィックをモニタリングする
+ 可能な場合は IP 範囲の代わりに[セキュリティグループ参照ルール](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html)を使用する

定期的な監査  
以下のタスクを行うための毎月のレビューを確立します。  
+ 未使用のルールを特定して削除する
+ 送信元/送信先の要件を検証する
+ 重複するルールを確認する

### ログ記録とモニタリング
<a name="dotnet-migrating-applications-security-best-logging"></a>

効果的なセキュリティモニタリングを行うには、次のログを設定します。

EC2 インスタンスの Windows イベントログ  

```
# Review Security event log
PS C:\migrations_workspace> Get-EventLog -LogName Security -Newest 50

# Check Application event log
PS C:\migrations_workspace> Get-EventLog -LogName Application -Source "IIS*"
```

CloudWatch Logs の統合  
CloudWatch Logs エージェントを設定して Windows イベントログを CloudWatch にストリーミングし、モニタリングとアラートを一元化します。

永続的な問題については、これらのログを収集し、以下の情報 AWS サポート について にお問い合わせください。
+ 環境 ID
+ デプロイ ID (該当する場合)
+ 関連するエラーメッセージ
+ セキュリティ変更のタイムライン