I don't think it's C, I'd pick D here. NSG inbound rules (C) can't control access to Azure Storage coming from public internet IPs, that's a common trick option. Storage account firewall rules (D) are made for this, letting you set an allow list of only those app servers' IPs. Pretty sure that's what Microsoft wants here but open to other takes.
Yeah, D makes the most sense to me. Storage account firewall rules let you specify those 20 app server IPs so only they get access, blocking everything else by default. NSGs like C don't work for public internet traffic to storage accounts. Pretty sure D is what Microsoft has in mind, unless there's some networking detail we're missing.
This looks like the classic scenario for D. You'd use storage account firewall rules so only the public IPs of those 20 servers are allowed access, everything else blocked by default. Official study guide and lab practices both highlight this method. I think D is best here but open to other suggestions if anyone has seen it handled another way in real exam cases.