Skip to content

閉域網からアクセス可能な AWS 上の Web アプリケーションを構築します

License

Notifications You must be signed in to change notification settings

CASL0/closed-network-on-aws

Repository files navigation

closed-network-on-aws

閉域網からアクセス可能な AWS 上の Web アプリケーションを構築します。

構成

infra

Prerequisites

Terraform

以下を参考に Terraform をインストールしてください。

AWS CLI

以下を参考に AWS CLI をインストールしてください。

OpenVPN easy-rsa

以下を参考に easy-rsa のインストール、サーバーとクライアントの証明書・秘密鍵の生成をしてください。

Usage

  1. 上記で生成したサーバーとクライアントの証明書・秘密鍵を以下のパスに配置してください。
    • 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 サーバー秘密鍵
  2. 以下のコマンドを実行してください。
terraform init
terraform apply

構築した環境に接続

AWS Client VPN のインストール

以下のサイトから VPN クライアントソフトをインストールしてください。

VPN プロファイルの設定

  1. AWS マネジメントコンソールにてクライアント VPN エンドポイントの設定にアクセスします。

  2. [クライアント設定ファイルをダウンロード]をクリックし、downloaded-client-config.ovpnをダウンロードします。

  3. downloaded-client-config.ovpnを編集し、クライアント証明書の情報を末尾に追加してください。

    <cert>
    -----BEGIN CERTIFICATE-----
    ~ クライアント証明書 ~
    -----END CERTIFICATE-----
    </cert>
    
    <key>
    -----BEGIN PRIVATE KEY-----
    ~ クライアント秘密鍵 ~
    -----END PRIVATE KEY-----
    </key>
    
  4. 上記で編集してdownloaded-client-config.ovpnを VPN クライアントで読み込みプロファイルを追加してください。

  5. DNS を Route53 にフォワードするために、接続する PC の DNS 設定をインバウンドエンドポイントの IP アドレスに修正してください。

Requirements

Name Version
terraform >= 1.0
aws >= 5.00

Providers

Name Version
aws 5.92.0

Modules

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

Resources

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

Inputs

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

Outputs

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

About

閉域網からアクセス可能な AWS 上の Web アプリケーションを構築します

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages