Cloud9 の Web IDE画面へのアクセスを制限してみた

2021.07.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

職場のルールなどで、オフィス以外からのCloud9のIDEへのアクセスを禁止したい場合どのようにすれば良いでしょうか。

Cloud9環境ではEC2インスタンスが作成されますので、インスタンスへの通信を制限すれば良いでしょうか。
EC2インスタンスへのアクセスを制限したとしても、変わらずマネジメントコンソールからはアクセスが出来ます。

方法としては、cloud9:*アクションを拒否することで実現出来ますが、もうちょっと絞れないものかと思い、ひとつづつアクションを検証していきました。

先に結論

いくつかアクションがある中で、DescribeEnvironmentStatusアクションを拒否することで実現が出来ます。

上記には特に記載はありませんが、Web IDEを起動するタイミングでステータスチェックを行い、アクセスが出来なければIDEを開かない仕組みのようです。

今回は、特定IPアドレス以外で上記拒否設定が適用されるIAMポリシーを作成しましたのでそのポリシー例と、拒否された場合にどういった挙動になるかを紹介したいと思います。
またCloud9の環境構築方法は以下の3つがありますが、その全てで確認しましたので、冗長かもしれませんがその結果ものせておきます。

  • direct access
  • access via Systems Manager
  • SSH connection

IAMポリシー

111.222.333.444/32以外からのcloud9:DescribeEnvironmentStatusアクションを拒否するだけです。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "cloud9:DescribeEnvironmentStatus",
            "Resource": "arn:aws:cloud9:*:123456789012:environment:*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "111.222.333.444/32"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "cloud9:*",
            "Resource": "*"
        }
    ]
}

許可されてないIPアドレスから接続した場合の挙動

direct access 環境

Cloud9 IDEへのアクセスが拒否されました。

Unable to access your environment

There was an error accessing your environment Error ... is not authorized to perform ...

access via Systems Manager 環境

同じようにアクセスが拒否されます。

SSH connection 環境

こちらも、同じようにアクセスが拒否されます。

許可されたIPアドレス

Cloud9 IDEへアクセス出来ました。

まとめ

ポリシー設定するだけではあるのですが、ありそうでなかったので記事に残すことにしました。
また、環境の作成なども拒否したい場合は、DescribeEnvironmentStatus以外のアクションの制御も検討しましょう。
この記事ではIPアドレスを条件にしていますが、条件を変えれば様々な使い方が出来そうですね。