Amazon Web Services ブログ
新しいセキュリティグループルール ID を使用してセキュリティグループルールを簡単に管理する
AWS では、基盤となる IT インフラストラクチャではなく、お客様のビジネスに集中できるよう、精力的にイノベーションを起こしています。私たちは、新しいサービスや主要な機能をリリースすることがあります。私たちは、お客様の仕事を楽にするために、細部に注力することがあります。
本日、違いを生み出すこれらの細部の 1 つである VPC セキュリティグループルール ID を発表します。
セキュリティグループは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスや Amazon Relational Database Service (RDS) データベースなど、クラウドリソースの仮想ファイアウォールとして機能します。これは入出力ネットワークトラフィックを制御します。セキュリティグループは、セキュリティグループルール、プロトコル、送信元、または送信先 IP アドレスとポート番号の組み合わせ、およびオプションの説明で構成されています。
AWS Command Line Interface (CLI) または API を使用してセキュリティグループルールを変更する場合は、ルールを識別するためにこれらの要素をすべて指定する必要があります。これにより、入力や読み込みが面倒でエラーが発生しやすい長い CLI コマンドが生成されます。以下に例を示します。
aws ec2 revoke-security-group-egress \
--group-id sg-0xxx6 \
--ip-permissions IpProtocol=tcp, FromPort=22, ToPort=22, IpRanges='[{CidrIp=192.168.0.0/0}, {84.156.0.0/0}]'
新機能
セキュリティグループルール ID は、セキュリティグループルールのための一意の識別子です。セキュリティグループにルールを追加すると、これらの識別子が自動的に作成され、セキュリティグループルールに追加されます。セキュリティグループ ID は AWS リージョンで一意です。Amazon VPC コンソールの [Edit inbound rules] (インバウンドルールの編集) ページを以下に示します。
既に述べたように、ルールを作成すると、識別子は自動的に追加されます。例えば、CLI を使用している場合は、以下のとおりです。
aws ec2 authorize-security-group-egress \
--group-id sg-0xxx6 \
--ip-permissions IpProtocol=tcp,FromPort=22,ToPort=22, \
IpRanges=[{CidrIp=1.2.3.4/32}]
--tag-specifications \
ResourceType='security-group-rule', \
"Tags": [{ \
"Key": "usage", "Value": "bastion" \
}]
更新された AuthorizeSecurityGroupEgress
API アクションは、セキュリティグループルール ID を含むセキュリティグループルールの詳細を返すようになりました。
"SecurityGroupRules": [
{
"SecurityGroupRuleId": "sgr-abcdefghi01234561",
"GroupId": "sg-0xxx6",
"GroupOwnerId": "6800000000003",
"IsEgress": false,
"IpProtocol": "tcp",
"FromPort": 22,
"ToPort": 22,
"CidrIpv4": "1.2.3.4/32",
"Tags": [
{
"Key": "usage",
"Value": "bastion"
}
]
}
]
また、VPC API に DescribeSecurityGroupRules
and ModifySecurityGroupRules
という 2 つの API アクションも追加しています。これらを使用して、各セキュリティグループルールを一覧表示または変更できます。
利点
セキュリティグループルール ID の最初の利点は、CLI コマンドを簡素化することです。例えば、先ほど使用した RevokeSecurityGroupEgress
コマンドは、次のように表現できます。
aws ec2 revoke-security-group-egress \
--group-id sg-0xxx6 \
--security-group-rule-ids "sgr-abcdefghi01234561"
短くて、簡単ですよね?
2 つ目の利点は、他の多くの AWS リソースと同様に、セキュリティグループルールをタグ付けできるようになったことです。タグを使用すると、複数のセキュリティグループ全体で一連のセキュリティグループルールをすばやく一覧表示または識別できます。
前の例では、セキュリティグループルールを作成した時点で、作成時のタグ付けのテクニックを使用して、--tag-specifications
でタグを追加しました。また、後の工程で、ID を使用して既存のセキュリティグループルールにタグを追加することもできます。
aws ec2 create-tags \
--resources sgr-abcdefghi01234561 \
--tags "Key=usage,Value=bastion"
例えば、会社が、オンプレミスの要塞ホストからネットワーク接続が開始された場合にのみ、一連の EC2 インスタンスへのアクセスを許可するとします。セキュリティグループルールは IpProtocol=tcp, FromPort=22, ToPort=22, IpRanges='[{1.2.3.4/32}]'
です。ここで 1.2.3.4
はオンプレミスの要塞ホストの IP アドレスです。このルールは、多くのセキュリティグループにレプリケートできます。
オンプレミスの要塞ホストの IP アドレスが変更された場合、 影響を受けるすべてのルールで IpRanges
パラメータを変更する必要があります。セキュリティグループルールに usage : bastion
タグを付けることで、DescribeSecurityGroupRules
API アクションを使用して AWS アカウントのセキュリティグループで使用されているセキュリティグループルールをリストし、usage : bastion
タグの結果をフィルタリングできるようになりました。これにより、更新するセキュリティグループのルールをすばやく特定することができました。
aws ec2 describe-security-group-rules \
--max-results 100
--filters "Name=tag-key,Values=usage" --filters "Name=tag-value,Values=bastion"
これにより、次のような出力が得られます。
{
"SecurityGroupRules": [
{
"SecurityGroupRuleId": "sgr-abcdefghi01234561",
"GroupId": "sg-0xxx6",
"GroupOwnerId": "40000000003",
"IsEgress": false,
"IpProtocol": "tcp",
"FromPort": 22,
"ToPort": 22,
"CidrIpv4": "1.2.3.4/32",
"Tags": [
{
"Key": "usage",
"Value": "bastion"
}
]
}
],
"NextToken": "ey...J9"
}
通常どおり、同じ API コールを再度発行して、結果のページ割りを管理できます。このとき、--next-token
を使用して NextToken
の値を渡します。
利用可能なリージョン
セキュリティグループルール ID は、すべての商用 AWS リージョンにおいて、VPC セキュリティグループルールのために無料で利用できます。
これは小さな変更のように見えるかもしれませんが、実際はセキュリティグループとセキュリティグループルールを管理するための将来の追加機能の基盤を生み出すものです。引き続きご期待ください!