diff options
| author | Ryan Harper <ryan.harper@canonical.com> | 2020-02-19 15:01:09 -0600 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-19 16:01:09 -0500 | 
| commit | 87cd040ed8fe7195cbb357ed3bbf53cd2a81436c (patch) | |
| tree | 9d528f71d9c44c809092a126f926df497f255b54 /tests/unittests/test_datasource | |
| parent | 3e2f7356effc9e9cccc5ae945846279804eedc46 (diff) | |
| download | vyos-cloud-init-87cd040ed8fe7195cbb357ed3bbf53cd2a81436c.tar.gz vyos-cloud-init-87cd040ed8fe7195cbb357ed3bbf53cd2a81436c.zip | |
ec2: Do not log IMDSv2 token values, instead use REDACTED (#219)
Instead of logging the token values used log the headers and replace the actual
values with the string 'REDACTED'.  This allows users to examine cloud-init.log
and see that the IMDSv2 token header is being used but avoids leaving the value
used in the log file itself.
LP: #1863943
Diffstat (limited to 'tests/unittests/test_datasource')
| -rw-r--r-- | tests/unittests/test_datasource/test_ec2.py | 17 | 
1 files changed, 17 insertions, 0 deletions
| diff --git a/tests/unittests/test_datasource/test_ec2.py b/tests/unittests/test_datasource/test_ec2.py index 19e1af2b..2a96122f 100644 --- a/tests/unittests/test_datasource/test_ec2.py +++ b/tests/unittests/test_datasource/test_ec2.py @@ -429,6 +429,23 @@ class TestEc2(test_helpers.HttprettyTestCase):          self.assertTrue(ds.get_data())          self.assertFalse(ds.is_classic_instance()) +    def test_aws_token_redacted(self): +        """Verify that aws tokens are redacted when logged.""" +        ds = self._setup_ds( +            platform_data=self.valid_platform_data, +            sys_cfg={'datasource': {'Ec2': {'strict_id': False}}}, +            md={'md': DEFAULT_METADATA}) +        self.assertTrue(ds.get_data()) +        all_logs = self.logs.getvalue().splitlines() +        REDACT_TTL = "'X-aws-ec2-metadata-token-ttl-seconds': 'REDACTED'" +        REDACT_TOK = "'X-aws-ec2-metadata-token': 'REDACTED'" +        logs_with_redacted_ttl = [log for log in all_logs if REDACT_TTL in log] +        logs_with_redacted = [log for log in all_logs if REDACT_TOK in log] +        logs_with_token = [log for log in all_logs if 'API-TOKEN' in log] +        self.assertEqual(1, len(logs_with_redacted_ttl)) +        self.assertEqual(79, len(logs_with_redacted)) +        self.assertEqual(0, len(logs_with_token)) +      @mock.patch('cloudinit.net.dhcp.maybe_perform_dhcp_discovery')      def test_valid_platform_with_strict_true(self, m_dhcp):          """Valid platform data should return true with strict_id true.""" | 
