Update metadata for NFT after creation?

Maybe you guys can point me in the right direction for the correct documentation. I have been looking for days and can’t seem to find what I am looking for as I am a newbie in the blockchain space.

Here is what I am attempting to do. I have a need for the image of an NFT to be updated after being created. From what I understand an NFT is comprised of an image/whatever format file and a metadata file. The image is stored on IPFS and the metadata contains an address pointing at the location of the image file. Normally on IPFS the address is basically the hash value for the file that way there is no need for a unique ID for the record since every hash is already unique because it is the file itself. So you can not change a file, like update it in anyway and keep the same address because the hash value would change and that is the address.

Now I happen to have a need to create an NFT where the image gets changed afterwards. From what I read so far is that I can store the file on IPFS and then setup an IPNS to point to that and that address can stay the same no matter what IPFS file it is point at. So then I can just use the IPNS address in the metadata instead of the IPFS one. So then I can update the IPNS to point at a different image stored on IPFS.

So my questions are as follows.

  1. How do I keep someone else from updating an IPNS address? I can not seem to find anything about security or privileges or any way to limit the updating to just you.
  2. I have also seen references to there being some way to update the metadata of an NFT after creation. Can anyone point me in the right direction if there is a way to do that.
  3. Finally is there a better way to accomplish this?

Would love to hear more about your solution or implementation if you have made any progress with this.