閉域網からアクセス可能な AWS 上の Web アプリケーションを構築します。
以下を参考に Terraform をインストールしてください。
以下を参考に AWS CLI をインストールしてください。
以下を参考に easy-rsa のインストール、サーバーとクライアントの証明書・秘密鍵の生成をしてください。
- 上記で生成したサーバーとクライアントの証明書・秘密鍵を以下のパスに配置してください。
files/ca.crt:ルート証明書files/vpn/server.crt:VPN サーバー証明書files/vpn/server.key:VPN サーバー秘密鍵files/vpn/client.crt:VPN クライアント証明書files/vpn/client.key:VPN クライアント秘密鍵files/ssl/server.crt:SSL サーバー証明書files/ssl/server.key:SSL サーバー秘密鍵
- 以下のコマンドを実行してください。
terraform init
terraform apply以下のサイトから VPN クライアントソフトをインストールしてください。
-
AWS マネジメントコンソールにてクライアント VPN エンドポイントの設定にアクセスします。
-
[クライアント設定ファイルをダウンロード]をクリックし、
downloaded-client-config.ovpnをダウンロードします。 -
downloaded-client-config.ovpnを編集し、クライアント証明書の情報を末尾に追加してください。<cert> -----BEGIN CERTIFICATE----- ~ クライアント証明書 ~ -----END CERTIFICATE----- </cert> <key> -----BEGIN PRIVATE KEY----- ~ クライアント秘密鍵 ~ -----END PRIVATE KEY----- </key> -
上記で編集して
downloaded-client-config.ovpnを VPN クライアントで読み込みプロファイルを追加してください。 -
DNS を Route53 にフォワードするために、接続する PC の DNS 設定をインバウンドエンドポイントの IP アドレスに修正してください。
| Name | Version |
|---|---|
| terraform | >= 1.0 |
| aws | >= 5.00 |
| Name | Version |
|---|---|
| aws | 5.92.0 |
| Name | Source | Version |
|---|---|---|
| alb | terraform-aws-modules/alb/aws | ~> 9.0 |
| ecr | terraform-aws-modules/ecr/aws | ~> 2.0 |
| ecs | terraform-aws-modules/ecs/aws | ~> 5.0 |
| endpoints | terraform-aws-modules/vpc/aws//modules/vpc-endpoints | ~> 5.0 |
| inbound_resolver_endpoints | terraform-aws-modules/route53/aws//modules/resolver-endpoints | ~> 5.0 |
| s3 | terraform-aws-modules/s3-bucket/aws | ~> 4.0 |
| security_group | terraform-aws-modules/security-group/aws | ~> 5.0 |
| security_group_inbound_resolver_endpoints | terraform-aws-modules/security-group/aws | ~> 5.0 |
| security_group_vpc_endpoints | terraform-aws-modules/security-group/aws | ~> 5.0 |
| vpc | terraform-aws-modules/vpc/aws | ~> 5.0 |
| Name | Type |
|---|---|
| aws_acm_certificate.ssl_server | resource |
| aws_acm_certificate.vpn_client | resource |
| aws_acm_certificate.vpn_server | resource |
| aws_ec2_client_vpn_authorization_rule.allow_all_users | resource |
| aws_ec2_client_vpn_endpoint.default | resource |
| aws_ec2_client_vpn_network_association.vpn_to_subnet | resource |
| aws_route53_zone.private_hosted_zone | resource |
| aws_s3_bucket_policy.vpce_bucket_policy | resource |
| aws_service_discovery_http_namespace.default | resource |
| aws_availability_zones.available | data source |
| aws_caller_identity.current | data source |
| aws_iam_policy_document.dkr_image_layer_pull_policy | data source |
| aws_iam_policy_document.s3_vpce_policy | data source |
| aws_region.current | data source |
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| additional_repository_read_write_access_arns | ECRリポジトリアクセス権を付与するIAM | list(string) |
[] |
no |
| az_count | AZ数 | number |
2 |
no |
| domain_name | ドメイン名 | string |
"casl0.github.io" |
no |
| ssl_policy | TLS セキュリティポリシー | string |
"ELBSecurityPolicy-TLS13-1-2-2021-06" |
no |
| Name | Description |
|---|---|
| acm_client_certificate_arn | VPNクライアント証明書のARN |
| acm_server_certificate_arn | VPNサーバー証明書のARN |
| ecr_repository_url | ECRのリポジトリURL |
| route53_resolver_endpoint_ip_addresses | Route53 Inbound EndpointのIPアドレス |
| vpce_for_s3 | S3用のVPC Endpoint |