Amazon EC2 セキュリティグループを作成する - AWS SDK for Java 1.x

AWS SDK for Java (v1) の近日発表 end-of-support しました。AWS SDK for Java v2 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

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

Amazon EC2 セキュリティグループを作成する

警告

2022 年 8 月 15 日に、EC2-Classic の提供を終了しhます。EC2-Classic は、VPC への移行をお勧めします。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドまたはWindows インスタンス用 Amazon EC2 ユーザーガイドの「EC2-Classic から VPC への移行」を参照してください。ブログ記事「EC2-Classic-Classic Networking is Retiring – Here's How to Prepare」も参照してください。

セキュリティグループを作成します。セキュリティグループは、1 つ以上の EC2 インスタンスのネットワークトラフィックを制御する仮想ファイアウォールとして機能します。デフォルトでは、Amazon EC2 はインバウンドトラフィックを許可しないセキュリティグループとインスタンスを関連付けます。EC2 インスタンスが特定のトラフィックを受け付けるようにするセキュリティグループを作成できます。たとえば、Linux インスタンスに接続する必要がある場合は、SSH トラフィックを許可するようにセキュリティグループを設定する必要があります。セキュリティグループは、Amazon EC2 コンソールまたは AWS SDK for Java を使って作成できます。

EC2-Classic または EC2-VPC で使用するセキュリティグループを作成します。EC2-Classic と EC2-VPC の詳細については、Amazon EC2 Linux インスタンス用ユーザーガイドのサポートされるプラットフォームを参照してください。

Amazon EC2 コンソールを使用したセキュリティグループの作成の詳細については、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「Amazon EC2 セキュリティグループ」を参照してください。

  1. CreateSecurityGroupRequest インスタンスを作成し、初期化します。 withGroupName メソッドを使用してセキュリティグループの名前を設定し、 withDescription メソッドを使用してセキュリティグループの説明を設定します。次に例を示します。

    CreateSecurityGroupRequest csgr = new CreateSecurityGroupRequest(); csgr.withGroupName("JavaSecurityGroup").withDescription("My security group");

    セキュリティグループ名は、Amazon EC2 クライアントを初期化する AWS リージョン内で一意である必要があります。セキュリティグループの名前と説明には、US-ASCII 文字を使用する必要があります。

  2. リクエストオブジェクトをパラメータとして createSecurityGroup メソッドに渡します。このメソッドは CreateSecurityGroupResult オブジェクトを返します。次に例を示します。

    CreateSecurityGroupResult createSecurityGroupResult = amazonEC2Client.createSecurityGroup(csgr);

    既存のセキュリティグループと同じ名前でセキュリティグループを作成しようとすると、createSecurityGroup によって例外がスローされます。

デフォルトでは、新しいセキュリティグループは Amazon EC2 インスタンスへのインバウンドトラフィックを許可しません。インバウンドトラフィックを許可するには、セキュリティグループの進入を明示的に承認する必要があります。個々の IP アドレス、IP アドレスの範囲、特定のプロトコル、および TCP/UDP ポートに対して進入を承認することができます。

  1. IpPermission インスタンスを作成し、初期化します。withIpv4Ranges メソッドを使用して、進入の承認対象となる IP アドレスの範囲を設定し、withIpProtocol メソッドを使用して、IP プロトコルを設定します。withFromPort メソッドと withToPort メソッドを使用して、進入の承認対象となるポートの範囲を指定します。次に例を示します。

    IpPermission ipPermission = new IpPermission(); IpRange ipRange1 = new IpRange().withCidrIp("111.111.111.111/32"); IpRange ipRange2 = new IpRange().withCidrIp("150.150.150.150/32"); ipPermission.withIpv4Ranges(Arrays.asList(new IpRange[] {ipRange1, ipRange2})) .withIpProtocol("tcp") .withFromPort(22) .withToPort(22);

    進入が許可されるには、IpPermission オブジェクトで指定したすべての条件を満たしている必要があります。

    CIDR 表記を使用して IP アドレスを指定します。プロトコルを TCP/UDP として指定した場合は、送信元ポートと送信先ポートを指定する必要があります。ポートを承認できるのは、TCP または UDP を指定した場合のみです。

  2. AuthorizeSecurityGroupIngressRequest インスタンスを作成し、初期化します。withGroupName メソッドを使用して、セキュリティグループの名前を指定し、前に初期化した IpPermission オブジェクトを withIpPermissions メソッドに渡します。次に例を示します。

    AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest = new AuthorizeSecurityGroupIngressRequest(); authorizeSecurityGroupIngressRequest.withGroupName("JavaSecurityGroup") .withIpPermissions(ipPermission);
  3. リクエストオブジェクトを authorizeSecurityGroupIngress メソッドに渡します。次に例を示します。

    amazonEC2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest);

    進入がすでに承認されている IP アドレスを使用して authorizeSecurityGroupIngress を呼び出すと、メソッドによって例外がスローされます。AuthorizeSecurityGroupIngress を呼び出す前に、新しい IpPermission オブジェクトを作成し、初期化して、異なる IP、ポート、プロトコルに対して進入を承認します。

authorizeSecurityGroupIngress メソッドまたは authorizeSecurityGroupEgress メソッドを呼び出すと、セキュリティグループにルールが追加されます。