diff --git a/omegaconf/dictconfig.py b/omegaconf/dictconfig.py
index 82a1636..fbac511 100644
--- a/omegaconf/dictconfig.py
+++ b/omegaconf/dictconfig.py
@@ -362,7 +362,7 @@ class DictConfig(BaseContainer, MutableMapping[str, Any]):
             if self._get_flag("readonly"):
                 raise ReadonlyConfigError("Cannot pop from read-only node")
 
-            node = self._get_node(key=key)
+            node = self._get_node(key=key, validate_access=False)
             if node is not None:
                 value = self._resolve_with_default(
                     key=key, value=node, default_value=default

diff --git a/tests/test_basic_ops_dict.py b/tests/test_basic_ops_dict.py
index 8145d7b..849d578 100644
--- a/tests/test_basic_ops_dict.py
+++ b/tests/test_basic_ops_dict.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 import re
 import tempfile
-from typing import Any, Dict, List, Union
+from typing import Any, Dict, List, Optional, Union
 
 import pytest
 
@@ -254,21 +254,56 @@ def test_iterate_dict_with_interpolation() -> None:
         i = i + 1
 
 
+@pytest.mark.parametrize(  # type: ignore
+    "struct",
+    [
+        pytest.param(None, id="struct_unspecified"),
+        pytest.param(False, id="struct_False"),
+        pytest.param(True, id="struct_True"),
+    ],
+)
 @pytest.mark.parametrize(  # type: ignore
     "cfg, key, default_, expected",
     [
-        ({"a": 1, "b": 2}, "a", None, 1),
-        ({"a": 1, "b": 2}, "not_found", "default", "default"),
+        pytest.param({"a": 1, "b": 2}, "a", "__NO_DEFAULT__", 1, id="no_default"),
+        pytest.param({"a": 1, "b": 2}, "not_found", None, None, id="none_default"),
+        pytest.param(
+            {"a": 1, "b": 2}, "not_found", "default", "default", id="with_default"
+        ),
         # Interpolations
-        ({"a": "${b}", "b": 2}, "a", None, 2),
+        pytest.param(
+            {"a": "${b}", "b": 2}, "a", "__NO_DEFAULT__", 2, id="interpolation"
+        ),
+        pytest.param(
+            {"a": "${b}"}, "a", "default", "default", id="interpolation_with_default"
+        ),
         # enum key
-        ({Enum1.FOO: "bar"}, Enum1.FOO, None, "bar"),
-        ({Enum1.FOO: "bar"}, Enum1.BAR, "default", "default"),
+        pytest.param(
+            {Enum1.FOO: "bar"},
+            Enum1.FOO,
+            "__NO_DEFAULT__",
+            "bar",
+            id="enum_key_no_default",
+        ),
+        pytest.param(
+            {Enum1.FOO: "bar"}, Enum1.BAR, None, None, id="enum_key_with_none_default",
+        ),
+        pytest.param(
+            {Enum1.FOO: "bar"},
+            Enum1.BAR,
+            "default",
+            "default",
+            id="enum_key_with_default",
+        ),
     ],
 )
-def test_dict_pop(cfg: Dict[Any, Any], key: Any, default_: Any, expected: Any) -> None:
+def test_dict_pop(
+    cfg: Dict[Any, Any], key: Any, default_: Any, expected: Any, struct: Optional[bool]
+) -> None:
     c = OmegaConf.create(cfg)
-    if default_ is not None:
+    OmegaConf.set_struct(c, struct)
+
+    if default_ != "__NO_DEFAULT__":
         val = c.pop(key, default_)
     else:
         val = c.pop(key)

[bug] .pop isn't behaving as standard dict in struct mode
```py
from omegaconf import OmegaConf
c = OmegaConf.create({"a": 1})
OmegaConf.set_struct(c, True)
c.get("b", 1) # Works fine returns 1
c.pop("b", 1) # Throws ConfigAttributeError
```

Expected:

`.pop` should return value 1

Actual:
Throws ConfigAttributeError

Version: 2.0.0.rc24

Used to work in rc16
tests/test_basic_ops_dict.py::test_dict_pop[none_default-struct_True] tests/test_basic_ops_dict.py::test_dict_pop[with_default-struct_True] tests/test_basic_ops_dict.py::test_dict_pop[enum_key_with_none_default-struct_True] tests/test_basic_ops_dict.py::test_dict_pop[enum_key_with_default-struct_True]
tests/test_basic_ops_dict.py::test_setattr_deep_value tests/test_basic_ops_dict.py::test_setattr_deep_from_empty tests/test_basic_ops_dict.py::test_setattr_deep_map tests/test_basic_ops_dict.py::test_getattr tests/test_basic_ops_dict.py::test_getattr_dict tests/test_basic_ops_dict.py::test_mandatory_value tests/test_basic_ops_dict.py::test_nested_dict_mandatory_value tests/test_basic_ops_dict.py::test_mandatory_with_default tests/test_basic_ops_dict.py::test_subscript_get tests/test_basic_ops_dict.py::test_subscript_set tests/test_basic_ops_dict.py::test_pretty_dict tests/test_basic_ops_dict.py::test_pretty_sort_keys tests/test_basic_ops_dict.py::test_pretty_dict_unicode tests/test_basic_ops_dict.py::test_default_value tests/test_basic_ops_dict.py::test_get_default_value tests/test_basic_ops_dict.py::test_scientific_notation_float tests/test_basic_ops_dict.py::test_dict_get_with_default[d0--missing] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello] tests/test_basic_ops_dict.py::test_map_expansion tests/test_basic_ops_dict.py::test_items tests/test_basic_ops_dict.py::test_items2 tests/test_basic_ops_dict.py::test_items_with_interpolation tests/test_basic_ops_dict.py::test_dict_keys tests/test_basic_ops_dict.py::test_pickle_get_root tests/test_basic_ops_dict.py::test_iterate_dictionary tests/test_basic_ops_dict.py::test_iterate_dict_with_interpolation tests/test_basic_ops_dict.py::test_dict_pop[no_default-struct_unspecified] tests/test_basic_ops_dict.py::test_dict_pop[no_default-struct_False] tests/test_basic_ops_dict.py::test_dict_pop[no_default-struct_True] tests/test_basic_ops_dict.py::test_dict_pop[none_default-struct_unspecified] tests/test_basic_ops_dict.py::test_dict_pop[none_default-struct_False] tests/test_basic_ops_dict.py::test_dict_pop[with_default-struct_unspecified] tests/test_basic_ops_dict.py::test_dict_pop[with_default-struct_False] tests/test_basic_ops_dict.py::test_dict_pop[interpolation-struct_unspecified] tests/test_basic_ops_dict.py::test_dict_pop[interpolation-struct_False] tests/test_basic_ops_dict.py::test_dict_pop[interpolation-struct_True] tests/test_basic_ops_dict.py::test_dict_pop[interpolation_with_default-struct_unspecified] tests/test_basic_ops_dict.py::test_dict_pop[interpolation_with_default-struct_False] tests/test_basic_ops_dict.py::test_dict_pop[interpolation_with_default-struct_True] tests/test_basic_ops_dict.py::test_dict_pop[enum_key_no_default-struct_unspecified] tests/test_basic_ops_dict.py::test_dict_pop[enum_key_no_default-struct_False] tests/test_basic_ops_dict.py::test_dict_pop[enum_key_no_default-struct_True] tests/test_basic_ops_dict.py::test_dict_pop[enum_key_with_none_default-struct_unspecified] tests/test_basic_ops_dict.py::test_dict_pop[enum_key_with_none_default-struct_False] tests/test_basic_ops_dict.py::test_dict_pop[enum_key_with_default-struct_unspecified] tests/test_basic_ops_dict.py::test_dict_pop[enum_key_with_default-struct_False] tests/test_basic_ops_dict.py::test_dict_pop_error[cfg0-not_found-expectation0] tests/test_basic_ops_dict.py::test_dict_pop_error[cfg1-a-expectation1] tests/test_basic_ops_dict.py::test_dict_pop_error[cfg2-a-expectation2] tests/test_basic_ops_dict.py::test_dict_pop_error[cfg3-Enum1.BAR-expectation3] tests/test_basic_ops_dict.py::test_in_dict[conf0-a-True] tests/test_basic_ops_dict.py::test_in_dict[conf1-b-True] tests/test_basic_ops_dict.py::test_in_dict[conf2-c-False] tests/test_basic_ops_dict.py::test_in_dict[conf3-b-True] tests/test_basic_ops_dict.py::test_in_dict[conf4-b-False] tests/test_basic_ops_dict.py::test_in_dict[conf5-c-False] tests/test_basic_ops_dict.py::test_in_dict[conf6-b-False] tests/test_basic_ops_dict.py::test_in_dict[conf7-a-True] tests/test_basic_ops_dict.py::test_in_dict[conf8-b-True] tests/test_basic_ops_dict.py::test_in_dict[conf9-b-True] tests/test_basic_ops_dict.py::test_in_dict[conf10-Enum1.FOO-True] tests/test_basic_ops_dict.py::test_get_root tests/test_basic_ops_dict.py::test_get_root_of_merged tests/test_basic_ops_dict.py::test_dict_config tests/test_basic_ops_dict.py::test_dict_delitem tests/test_basic_ops_dict.py::test_dict_len[d0-0] tests/test_basic_ops_dict.py::test_dict_len[d1-2] tests/test_basic_ops_dict.py::test_dict_assign_illegal_value tests/test_basic_ops_dict.py::test_dict_assign_illegal_value_nested tests/test_basic_ops_dict.py::test_assign_dict_in_dict tests/test_basic_ops_dict.py::test_to_container[src0] tests/test_basic_ops_dict.py::test_to_container[src1] tests/test_basic_ops_dict.py::test_to_container[src2] tests/test_basic_ops_dict.py::test_pretty_without_resolve tests/test_basic_ops_dict.py::test_pretty_with_resolve tests/test_basic_ops_dict.py::test_instantiate_config_fails tests/test_basic_ops_dict.py::test_dir[cfg0-None-expected0] tests/test_basic_ops_dict.py::test_dir[cfg1-a-expected1] tests/test_basic_ops_dict.py::test_dir[StructuredWithMissing-dict-expected2] tests/test_basic_ops_dict.py::test_hash tests/test_basic_ops_dict.py::test_get_with_default_from_struct_not_throwing[default] tests/test_basic_ops_dict.py::test_get_with_default_from_struct_not_throwing[0] tests/test_basic_ops_dict.py::test_get_with_default_from_struct_not_throwing[None] tests/test_basic_ops_dict.py::test_members tests/test_basic_ops_dict.py::test_masked_copy[in_cfg0-mask_keys0-expected0] tests/test_basic_ops_dict.py::test_masked_copy[in_cfg1-a-expected1] tests/test_basic_ops_dict.py::test_masked_copy[in_cfg2-mask_keys2-expected2] tests/test_basic_ops_dict.py::test_masked_copy[in_cfg3-b-expected3] tests/test_basic_ops_dict.py::test_masked_copy[in_cfg4-mask_keys4-expected4] tests/test_basic_ops_dict.py::test_masked_copy_is_deep tests/test_basic_ops_dict.py::test_creation_with_invalid_key tests/test_basic_ops_dict.py::test_set_with_invalid_key tests/test_basic_ops_dict.py::test_get_with_invalid_key tests/test_basic_ops_dict.py::test_hasattr tests/test_basic_ops_dict.py::test_struct_mode_missing_key_getitem tests/test_basic_ops_dict.py::test_struct_mode_missing_key_setitem tests/test_basic_ops_dict.py::test_get_type tests/test_basic_ops_dict.py::test_get_ref_type tests/test_basic_ops_dict.py::test_get_ref_type_with_conflict tests/test_basic_ops_dict.py::test_is_missing tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[None-None] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[None-ref_type1] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[assign1-None] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[assign1-ref_type1] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[assign2-None] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[assign2-ref_type1] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[assign3-None] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[assign3-ref_type1] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[Plugin-values0-None-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[Plugin-values1-Plugin-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[Plugin-values2-assign2-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[Plugin-values3-ConcretePlugin-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[Plugin-values4-assign4-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[Plugin-values5-10-<lambda>] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[ConcretePlugin-values6-None-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[ConcretePlugin-values7-Plugin-<lambda>] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[ConcretePlugin-values8-assign8-<lambda>] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[ConcretePlugin-values9-ConcretePlugin-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[ConcretePlugin-values10-assign10-does_not_raise]