, but all you need to know for now is
that TSIG-signed dynamic updates bear the cryptographic signature of
the signer. If they're forwarded, the signature is forwarded
with them. The signature, when verified, tells you the name of the
key used to sign the update. The name of the key looks like a domain
name, and it's often just the domain name of the host the key
is installed on.
With BIND 8.2 and later name servers, an address match list can
include the name of one or more TSIG keys:
zone. Unfortunately,
there's no way to further restrict the updater with that TSIG
key to a list of source IP addresses.
So, if mummy.fx.movie.eduuses a key called mummy.fx.movie.eduto sign its dynamic updates, we could restrict mummy.fx.movie.eduto updating its own records with the following:
zone "fx.movie.edu" {
type master;
file "db.fx.movie.edu";
update-policy { grant mummy.fx.movie.edu. self mummy.fx.movie.edu.; };
};
or just its own address records with this:
zone "fx.movie.edu" {
type master;
file "db.fx.movie.edu";
update-policy { grant mummy.fx.movie.edu. self mummy.fx.movie.edu. A; };
};
More generally, we could restrict all of our clients to updating only
their own address records by using:
zone "fx.movie.edu" {
type master;
file "db.fx.movie.edu";
update-policy { grant *.fx.movie.edu. self fx.movie.edu. A; };
};
Here's a more complicated example: to allow all clients the
ability to change any records, except SRV records, that are owned by
the same domain name as their key name, but to allow
matrix.fx.movie.edu to update SRV records
associated with Windows 2000 (in the
_udp.fx.movie.edu,
_tcp.fx.movie.edu,
_sites.fx.movie.edu, and
_msdcs.fx.movie.edu subdomains), you could use:
zone "fx.movie.edu" {
type master;
file "db.fx.movie.edu";
update-policy {
deny *.fx.movie.edu. self *.fx.movie.edu. SRV;
grant *.fx.movie.edu. self *.fx.movie.edu. ANY;
grant matrix.fx.movie.edu. subdomain _udp.fx.movie.edu. SRV;
grant matrix.fx.movie.edu. subdomain _tcp.fx.movie.edu. SRV;
grant matrix.fx.movie.edu. subdomain _sites.fx.movie.edu. SRV;
grant matrix.fx.movie.edu. subdomain _msdcs.fx.movie.edu. SRV;
};
};
Since the rules in the update-policy
substatement are evaluated in the order in which they
appear, clients can't update their SRV records, though they can
update any other record types they own.
In case you're wondering, the difference between:
grant identity subdomain fx.movie.edu
and:
grant identity wildcard fx.movie.edu:
is that the former allows the key specified by
identity to modify records attached to
fx.movie.edu (say, the zone's NS records)
while the latter doesn't.