diff --git a/qcodes/utils/validators.py b/qcodes/utils/validators.py
index 0febf3b7eeb..d754378241f 100644
--- a/qcodes/utils/validators.py
+++ b/qcodes/utils/validators.py
@@ -545,14 +545,29 @@ class Dict(Validator):
     """
     Validator for dictionaries
     """
-    def __init__(self):
-        # exists only to overwrite parent class
-        pass
+    def __init__(self, allowed_keys=None):
+        """
+        Validator for dictionary keys
+        Args:
+            allowed_keys (List): if set, all keys must be in allowed_keys
+        """
+        self.allowed_keys = allowed_keys
 
     def validate(self, value, context=''):
         if not isinstance(value, dict):
             raise TypeError(
                 '{} is not a dictionary; {}'.format(repr(value), context))
 
+        if self.allowed_keys is not None:
+            forbidden_keys = [key for key in value if key not in self.allowed_keys]
+            if forbidden_keys:
+                raise SyntaxError('Dictionary keys {} are not in allowed keys '
+                                  '{}'.format(forbidden_keys,
+                                              self.allowed_keys))
+
+
     def __repr__(self):
-        return '<Dict>'
+        if self.allowed_keys is None:
+            return '<Dict>'
+        else:
+            return '<Dict {}>'.format(self.allowed_keys)